9 İşlemeler 14c7f7b4e4 ... 41bb1928b2

Yazar SHA1 Mesaj Tarih
  Anatoliy Chigirinskiy 41bb1928b2 Обновил скрипт 10 ay önce
  Anatoliy Chigirinskiy 6ba2966e57 Переключил режим работы FIFO из "First word fallthrough" в "Standard". 10 ay önce
  Anatoliy Chigirinskiy b388d99a1b Проверка выходных данных с DdsSpiM 10 ay önce
  Anatoliy Chigirinskiy 9163f58879 Перенёс проверку ParityBit после FIFO 11 ay önce
  Anatoliy Chigirinskiy 84de0b00cf Добавил ParityCheck 11 ay önce
  Anatoliy Chigirinskiy fabe6180da Добавил задержку для SpiM Lmx. 11 ay önce
  Anatoliy Chigirinskiy d59dbf7ab9 Тестирую скрипт. Golden Image. 11 ay önce
  Anatoliy Chigirinskiy e3e4e86fdf Merge 11 ay önce
  Anatoliy Chigirinskiy 1509e9d8de Расширил поле для MAX2870. SB_TMSG_v1 1 yıl önce
78 değiştirilmiş dosya ile 4531 ekleme ve 3714 silme
  1. 34 0
      .gitignore
  2. 310 0
      MergingScript/BinsMerge.py
  3. BIN
      MergingScript/SB_TMSG44V1_GOLD_FPGA.bin
  4. BIN
      MergingScript/SB_TMSG44V1_MERGED_FPGA.bin
  5. 4 4
      src/constr/SbTmsg.cst
  6. 18 12
      src/constr/SbTmsg.sdc
  7. 175 0
      src/src/CDC/synchronizer.v
  8. 28 6
      src/src/FifoCtrl/FifoCtrl.v
  9. 30 5
      src/src/InterfaceArbiter/InterfaceArbiter.v
  10. 1 1
      src/src/PacketAnalyzer4Mosi/PacketAnalyzer4Mosi.v
  11. 127 36
      src/src/SPIm/SpiM.v
  12. 120 0
      src/src/SpiS/SpiSlave.v
  13. 995 959
      src/src/Top/ExtQspiMEmul.v
  14. 0 3
      src/src/Top/ExtSpiMEmul.v
  15. 46 1
      src/src/Top/TopSbTmsg.v
  16. 5 5
      src/src/Top/TopSbTmsgTb.sv
  17. 159 18
      src/src/WrapFifoChain/DDSWrapper.v
  18. 2 2
      src/src/WrapFifoChain/Fifo16x3/Fifo16x3.ipc
  19. 112 122
      src/src/WrapFifoChain/Fifo16x3/Fifo16x3.v
  20. 79 101
      src/src/WrapFifoChain/Fifo16x3/Fifo16x3.vo
  21. 13 13
      src/src/WrapFifoChain/Fifo16x3/Fifo16x3_tmp.v
  22. 6 4
      src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/FIFOHS.prj
  23. 32 23
      src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3.log
  24. 112 122
      src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3.vg
  25. 46 43
      src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3_syn.rpt.html
  26. 2 2
      src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_resource.html
  27. 1 1
      src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_rsc.xml
  28. 13 13
      src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3_tmp.v
  29. 0 1
      src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/fifo_define.v
  30. 2 2
      src/src/WrapFifoChain/FifoDDS/FifoDDS.ipc
  31. 139 149
      src/src/WrapFifoChain/FifoDDS/FifoDDS.v
  32. 83 105
      src/src/WrapFifoChain/FifoDDS/FifoDDS.vo
  33. 3 3
      src/src/WrapFifoChain/FifoDDS/FifoDDS_tmp.v
  34. 5 3
      src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FIFOHS.prj
  35. 29 20
      src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS.log
  36. 139 149
      src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS.vg
  37. 45 42
      src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_syn.rpt.html
  38. 2 2
      src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_syn_resource.html
  39. 1 1
      src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_syn_rsc.xml
  40. 3 3
      src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_tmp.v
  41. 0 1
      src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/fifo_define.v
  42. 2 2
      src/src/WrapFifoChain/FifoLMX/FifoLMX.ipc
  43. 218 239
      src/src/WrapFifoChain/FifoLMX/FifoLMX.v
  44. 116 172
      src/src/WrapFifoChain/FifoLMX/FifoLMX.vo
  45. 13 13
      src/src/WrapFifoChain/FifoLMX/FifoLMX_tmp.v
  46. 6 4
      src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FIFOHS.prj
  47. 32 23
      src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX.log
  48. 218 239
      src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX.vg
  49. 36 33
      src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX_syn.rpt.html
  50. 3 3
      src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX_syn_resource.html
  51. 1 1
      src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX_syn_rsc.xml
  52. 13 13
      src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX_tmp.v
  53. 0 1
      src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/fifo_define.v
  54. 2 2
      src/src/WrapFifoChain/FifoMax2870/FifoMax2870.ipc
  55. 149 157
      src/src/WrapFifoChain/FifoMax2870/FifoMax2870.v
  56. 110 129
      src/src/WrapFifoChain/FifoMax2870/FifoMax2870.vo
  57. 13 13
      src/src/WrapFifoChain/FifoMax2870/FifoMax2870_tmp.v
  58. 6 4
      src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FIFOHS.prj
  59. 32 23
      src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870.log
  60. 149 157
      src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870.vg
  61. 39 36
      src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870_syn.rpt.html
  62. 3 3
      src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_resource.html
  63. 1 1
      src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_rsc.xml
  64. 13 13
      src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870_tmp.v
  65. 0 1
      src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/fifo_define.v
  66. 2 2
      src/src/WrapFifoChain/FifoShiftReg/FifoShiftReg.ipc
  67. 113 123
      src/src/WrapFifoChain/FifoShiftReg/FifoShiftReg.v
  68. 79 101
      src/src/WrapFifoChain/FifoShiftReg/FifoShiftReg.vo
  69. 13 13
      src/src/WrapFifoChain/FifoShiftReg/FifoShiftReg_tmp.v
  70. 6 4
      src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FIFOHS.prj
  71. 32 23
      src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg.log
  72. 113 123
      src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg.vg
  73. 46 43
      src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn.rpt.html
  74. 2 2
      src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_resource.html
  75. 1 1
      src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_rsc.xml
  76. 13 13
      src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg_tmp.v
  77. 0 1
      src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/fifo_define.v
  78. 15 6
      src/src/WrapFifoChain/LmxWrapper.v

+ 34 - 0
.gitignore

@@ -0,0 +1,34 @@
+
+#Ignore thumbnails created by Windows
+Thumbs.db
+#Ignore files built by Visual Studio
+*.obj
+*.exe
+*.pdb
+*.user
+*.aps
+*.pch
+*.vspscc
+*_i.c
+*_p.c
+*.ncb
+*.suo
+*.tlb
+*.tlh
+*.bak
+*.cache
+*.ilk
+*.log
+[Bb]in
+[Dd]ebug*/
+*.lib
+*.sbr
+obj/
+[Rr]elease*/
+_ReSharper*/
+[Tt]est[Rr]esult*
+.vs/
+.idea/
+#Nuget packages folder
+packages/
+*.bin

+ 310 - 0
MergingScript/BinsMerge.py

@@ -0,0 +1,310 @@
+import os
+import argparse
+import shutil
+
+GIT_HASH = "e3e4e86fdf3bb66747436c485453fd07"
+GIT_HASH_BIN = bytes.fromhex(GIT_HASH)
+INITIAL_DIR = os.path.dirname(os.path.abspath(__file__))
+
+APP_VER_ADDRESS = 0x6D000
+GOLDEN_APP_VER_ADDRESS = 0xDE000
+GOLDEN_ADDRESS = 0x0071000
+GOLDEN_APP_VERSION_SHIFTED = GOLDEN_APP_VER_ADDRESS-GOLDEN_ADDRESS
+
+
+def get_git_hash():
+    # Проверяем текущую директорию. Если не initial_dir, то переходим в нее
+    print(f"Текущая директория: {os.getcwd()}")
+    print(f"Исходная директория: {INITIAL_DIR}")
+    if os.getcwd() != INITIAL_DIR:
+        os.chdir(INITIAL_DIR)
+    # Переходим в директорию с git репозиторием
+    git_dir = find_git_repository()
+    if git_dir is None:
+        print("Не удалось найти git репозиторий.")
+        return None
+    os.chdir(git_dir)
+    # Получаем git hash --short
+    try:
+        git_hash = os.popen('git rev-parse --short HEAD').read().strip()
+    except Exception as e:
+        print(f"Ошибка при получении git hash: {e}")
+        git_hash = None
+    # Возвращаемся в исходную директорию
+    os.chdir(os.path.dirname(INITIAL_DIR))
+    return git_hash
+
+def get_git_tag():
+      # Проверяем текущую директорию. Если не initial_dir, то переходим в нее
+    if os.getcwd() != INITIAL_DIR:
+        os.chdir(INITIAL_DIR)
+    # Переходим в директорию с git репозиторием
+    git_dir = find_git_repository()
+    if git_dir is None:
+        print("Не удалось найти git репозиторий.")
+        return None
+    os.chdir(git_dir)
+    # Получаем git tag
+    try:
+        git_tag = os.popen('git describe --tags').read().strip()
+    except Exception as e:
+        print(f"Ошибка при получении git tag: {e}")
+        git_tag = None
+    # Возвращаемся в исходную директорию
+    os.chdir(os.path.dirname(INITIAL_DIR))
+    return git_tag
+
+def find_git_repository():
+    current_dir = INITIAL_DIR
+    
+    try:
+        # Выходим выше по дереву каталогов, пока не найдем .git
+        while True:
+            if os.path.isdir(os.path.join(current_dir, '.git')):
+                git_dir = os.path.abspath(os.path.join(current_dir, '.git'))
+                print(f"Найден git репозиторий: {git_dir}")
+                return git_dir
+                
+            parent_dir = os.path.dirname(current_dir)
+            if parent_dir == current_dir:  # Достигли корня файловой системы
+                print("Не удалось найти git репозиторий.")
+                return None
+                
+            current_dir = parent_dir
+            print(f"Проверяем директорию: {current_dir}")
+            
+    except Exception as e:
+        print(f"Ошибка при поиске git репозитория: {e}")
+        return None
+    finally:
+        # Возвращаемся в исходную директорию
+        os.chdir(INITIAL_DIR)
+
+def find_tag(tag_pattern):
+    # Проверяем текущую директорию. Если не initial_dir, то переходим в нее
+    if os.getcwd() != INITIAL_DIR:
+        os.chdir(INITIAL_DIR)
+    # Переходим в директорию с git репозиторием
+    git_dir = find_git_repository()
+    if git_dir is None:
+        print("Не удалось найти git репозиторий.")
+        return None
+    os.chdir(git_dir)
+    # Получаем все теги в git репозитории
+    all_tags = os.popen('git tag').read().strip().split('\n')
+    if not all_tags:
+        print("Не найдено ни одного тега в git репозитории.")
+        return None
+    # Фильтруем теги по заданному шаблону
+    matching_tags = [tag for tag in all_tags if tag_pattern in tag]
+    if not matching_tags:
+        print(f"Не найдено тегов, соответствующих шаблону: {tag_pattern}")
+        return None
+    # Получаем последний тег из списка совпадений
+    latest_tag = matching_tags[-1]
+    print(f"Найден тег: {latest_tag}")
+    # Возвращаемся в исходную директорию
+    os.chdir(os.path.dirname(INITIAL_DIR))
+    return latest_tag
+
+def merge_bins ():
+    #  Пути к файлам
+    os.chdir(INITIAL_DIR)
+    pwd = os.getcwd()
+    file_path_working = os.path.join(INITIAL_DIR, "SB_TMSG44V1_WORKING_FPGA.bin")
+    file_path_golden = os.path.join(INITIAL_DIR, "SB_TMSG44V1_GOLD_FPGA.bin")
+    file_path_output = os.path.join(INITIAL_DIR, "SB_TMSG44V1_TEST_MERGE_FPGA.bin")
+    #  Размеры файлов
+    file_size_working   = os.path.getsize(file_path_working)
+    file_size_golden    = os.path.getsize(file_path_golden)
+    #  Размер выходного файла - 8 Мбит
+    file_size_output    = 0x1000000  
+    # Записываем первый файл
+    with open(file_path_output,'wb') as outfile:
+        with open(file_path_working, 'rb') as f1:
+            shutil.copyfileobj(f1, outfile)
+        # Перемещаемся к адресу для второго файла
+        outfile.seek(GOLDEN_ADDRESS)
+        with open(file_path_golden, 'rb') as f2:
+            shutil.copyfileobj(f2, outfile)
+        # Перемещаемся к адресу для пользовательских данных
+        outfile.seek(APP_VER_ADDRESS)
+        current_git_tag=find_tag("_WORKING")
+        print(f"Текущий git tag: {current_git_tag}")
+        # Если полученный тег меньше 32 байт, то дополняем его до 32 байт
+        encoded_git_tag = current_git_tag.encode('utf-8')
+        if len(encoded_git_tag) < 32:
+            encoded_git_tag = encoded_git_tag.ljust(32, b'\x00')
+
+        # Записываем тег в файл
+        outfile.write(encoded_git_tag)
+        # Перемещаемся к адресу для GOLDEN данных
+        outfile.seek(GOLDEN_APP_VER_ADDRESS)
+        golden_tag = find_tag("_GOLDEN")
+        print(f"Текущий golden git tag: {golden_tag}")
+        # Если полученный тег меньше 32 байт, то дополняем его до 32 байт
+        encoded_golden_tag = golden_tag.encode('utf-8')
+        if len(encoded_golden_tag) < 32:
+            encoded_golden_tag = encoded_golden_tag.ljust(32, b'\x00')
+        outfile.write(encoded_golden_tag)
+    final_size = os.path.getsize(file_path_output)
+    # Проверка итогового размера
+    if final_size > file_size_output:
+        os.remove(file_path_output)  # Удаляем некорректный файл
+        raise ValueError(f"Итоговый размер файла ({final_size} байт) превысил максимально допустимый ({file_size_output} байт)")
+    print(f"Размер файла 1: {file_size_working} байт")
+    print(f"Размер файла 2: {file_size_golden} байт")
+    print(f"Итоговый размер: {final_size} байт")
+    return final_size
+
+def merge_working_only():
+    #  Пути к файлам
+    os.chdir(INITIAL_DIR)
+    pwd = os.getcwd()
+    file_path_working = os.path.join(INITIAL_DIR, "SB_TMSG44V1_WORKING_FPGA.bin")
+    file_path_output = os.path.join(INITIAL_DIR, "SB_TMSG44V1_WORKING_IMAGE_FPGA.bin")
+    #  Размеры файлов
+    file_size_working   = os.path.getsize(file_path_working)
+    #  Размер выходного файла - 8 Мбит
+    file_size_output    = 0x1000000  
+    # Записываем первый файл
+    with open(file_path_output,'wb') as outfile:
+        with open(file_path_working, 'rb') as f1:
+            shutil.copyfileobj(f1, outfile)
+        # Перемещаемся к адресу для пользовательских данных
+        outfile.seek(APP_VER_ADDRESS)
+        current_git_tag=find_tag("_WORKING")
+        print(f"Текущий git tag: {current_git_tag}")
+        # Если полученный тег меньше 32 байт, то дополняем его до 32 байт
+        encoded_git_tag = current_git_tag.encode('utf-8')
+        if len(encoded_git_tag) < 32:
+            encoded_git_tag = encoded_git_tag.ljust(32, b'\x00')
+
+        # Записываем тег в файл
+        outfile.write(encoded_git_tag)
+    final_size = os.path.getsize(file_path_output)
+    # Проверка итогового размера
+    if final_size > file_size_output:
+        os.remove(file_path_output)  # Удаляем некорректный файл
+        raise ValueError(f"Итоговый размер файла ({final_size} байт) превысил максимально допустимый ({file_size_output} байт)")
+    print(f"Размер файла: {file_size_working} байт")
+    print(f"Итоговый размер: {final_size} байт")
+    return final_size
+
+def merge_test_only():
+    #  Пути к файлам
+    os.chdir(INITIAL_DIR)
+    pwd = os.getcwd()
+    file_path_test = os.path.join(INITIAL_DIR, "SB_TMSG44V1_FPGA_TEST.bin")
+    file_path_output = os.path.join(INITIAL_DIR, "SB_TMSG44V1_TEST_FPGA.bin")
+    #  Размеры файлов
+    file_size_test   = os.path.getsize(file_path_test)
+    #  Размер выходного файла - 8 Мбит
+    file_size_output    = 0x1000000  
+    # Записываем первый файл
+    with open(file_path_output,'wb') as outfile:
+        with open(file_path_test, 'rb') as f1:
+            shutil.copyfileobj(f1, outfile)
+        # Перемещаемся к адресу для пользовательских данных
+        outfile.seek(APP_VER_ADDRESS)
+        test_tag = find_tag("_TEST")
+        print(f"Текущий test git tag: {test_tag}")
+        # Если полученный тег меньше 32 байт, то дополняем его до 32 байт
+        encoded_test_tag = test_tag.encode('utf-8')
+        if len(encoded_test_tag) < 32:
+            encoded_test_tag = encoded_test_tag.ljust(32, b'\x00')
+        # Записываем тег в файл
+        outfile.write(encoded_test_tag)
+    final_size = os.path.getsize(file_path_output)
+    # Проверка итогового размера
+    if final_size > file_size_output:
+        os.remove(file_path_output)  # Удаляем некорректный файл
+        raise ValueError(f"Итоговый размер файла ({final_size} байт) превысил максимально допустимый ({file_size_output} байт)")
+    print(f"Размер файла: {file_size_test} байт")
+    print(f"Итоговый размер: {final_size} байт")
+    return final_size
+
+
+def merge_golden_only():
+    #  Пути к файлам
+    os.chdir(INITIAL_DIR)
+    pwd = os.getcwd()
+    file_path_golden = os.path.join(INITIAL_DIR, "SB_TMSG44V1_GOLD_FPGA.bin")
+    file_path_output = os.path.join(INITIAL_DIR, "SB_TMSG44V1_TEST_GOLDEN_FPGA.bin")
+    #  Размеры файлов
+    file_size_golden   = os.path.getsize(file_path_golden)
+    #  Размер выходного файла - 8 Мбит
+    file_size_output    = 0x1000000  
+    # Записываем первый файл
+    with open(file_path_output,'wb') as outfile:
+        with open(file_path_golden, 'rb') as f2:
+            shutil.copyfileobj(f2, outfile)
+        # Перемещаемся к адресу для пользовательских данных
+        outfile.seek(GOLDEN_APP_VERSION_SHIFTED)
+        golden_tag = find_tag("_GOLDEN")
+        print(f"Текущий golden git tag: {golden_tag}")
+        # Если полученный тег меньше 32 байт, то дополняем его до 32 байт
+        encoded_golden_tag = golden_tag.encode('utf-8')
+        if len(encoded_golden_tag) < 32:
+            encoded_golden_tag = encoded_golden_tag.ljust(32, b'\x00')
+        outfile.write(encoded_golden_tag)
+    final_size = os.path.getsize(file_path_output)
+    # Проверка итогового размера
+    if final_size > file_size_output:
+        os.remove(file_path_output)  # Удаляем некорректный файл
+        raise ValueError(f"Итоговый размер файла ({final_size} байт) превысил максимально допустимый ({file_size_output} байт)")
+    print(f"Размер файла: {file_size_golden} байт")
+    print(f"Итоговый размер: {final_size} байт")
+    return final_size
+
+
+def main():
+
+    parser = argparse.ArgumentParser(description='Скрипт для объединения бинарных файлов прошивок')
+    parser.add_argument('--mode', choices=['merge', 'working', 'golden'], 
+                        help='Режим работы: merge - объединить Working и Golden, working - только Working и  Working версию, golden - только Golden и Golden версию',
+                        required=False)
+    
+    args = parser.parse_args()
+    
+    # Если режим не задан через аргумент, запрашиваем у пользователя
+    if args.mode is None:
+        print("Выберите режим работы:")
+        print("1. merge   - объединить Working и Golden прошивки")
+        print("2. working - объединить только Working прошивку с её версией")
+        print("3. golden  - объединить только Golden прошивку с её версией")
+        print("4. test    - объединить только Test прошивку с её версией")
+        
+        choice = ""
+        while choice not in ["1", "2", "3","4", "merge", "working", "golden","test"]:
+            choice = input("Введите номер (1-4) или название режима: ").strip().lower()
+            if choice == "1":
+                choice = "merge"
+            elif choice == "2":
+                choice = "working"
+            elif choice == "3":
+                choice = "golden"
+            elif choice == "4":
+                choice = "test"
+        
+        mode = choice
+    else:
+        mode = args.mode
+    
+    if mode == 'merge':
+        print("Объединение Working и Golden прошивок...")
+        merge_bins()
+    elif mode == 'working':
+        print("Объединение только Working прошивки с её версией...")
+        merge_working_only()
+    elif mode == 'golden':
+        print("Объединение только Golden прошивки с её версией...")
+        merge_golden_only()
+    elif mode == 'test':
+        print("Объединение только Test прошивки с её версией...")
+        merge_test_only()
+
+
+
+if __name__ == '__main__':
+    main()

BIN
MergingScript/SB_TMSG44V1_GOLD_FPGA.bin


BIN
MergingScript/SB_TMSG44V1_MERGED_FPGA.bin


+ 4 - 4
src/constr/SbTmsg.cst

@@ -1,10 +1,10 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved. 
 //All rights reserved. 
 //File Title: Physical Constraints file
 //File Title: Physical Constraints file
-//Tool Version: V1.9.9.03 (64-bit)
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-9
 //Device: GW1N-9
-//Created Time: Wed 02 26 18:14:50 2025
+//Created Time: Wed 06 25 16:51:40 2025
 
 
 IO_LOC "FpgaLed_o" L16;
 IO_LOC "FpgaLed_o" L16;
 IO_PORT "FpgaLed_o" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3;
 IO_PORT "FpgaLed_o" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3;
@@ -126,4 +126,4 @@ IO_PORT "Sck_i" IO_TYPE=LVCMOS33 PULL_MODE=UP BANK_VCCIO=3.3;
 IO_LOC "Rst_i" T9;
 IO_LOC "Rst_i" T9;
 IO_PORT "Rst_i" IO_TYPE=LVCMOS33 PULL_MODE=UP BANK_VCCIO=3.3;
 IO_PORT "Rst_i" IO_TYPE=LVCMOS33 PULL_MODE=UP BANK_VCCIO=3.3;
 IO_LOC "Clk_i" H11;
 IO_LOC "Clk_i" H11;
-IO_PORT "Clk_i" IO_TYPE=LVCMOS33 PULL_MODE=UP BANK_VCCIO=3.3;
+IO_PORT "Clk_i" IO_TYPE=LVCMOS33 PULL_MODE=UP BANK_VCCIO=3.3;

+ 18 - 12
src/constr/SbTmsg.sdc

@@ -1,15 +1,21 @@
-//Copyright (C)2014-2024 GOWIN Semiconductor Corporation.
+//Copyright (C)2014-2025 GOWIN Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Timing Constraints file
 //File Title: Timing Constraints file
-//Tool Version: V1.9.9.03 (64-bit) 
-//Created Time: 2024-05-31 16:04:42
-create_clock -name clk5 -period 200 -waveform {0 100} [get_nets {clk5}]
-create_clock -name clk60 -period 16.667 -waveform {0 8.334} [get_nets {clk60}]
+//Tool Version: V1.9.11.02 (64-bit) 
+//Created Time: 2025-06-26 10:43:21
 create_clock -name Clk_i -period 41.667 -waveform {0 20.834} [get_ports {Clk_i}]
 create_clock -name Clk_i -period 41.667 -waveform {0 20.834} [get_ports {Clk_i}]
-create_clock -name Sck_i -period 10 -waveform {0 5} [get_ports {Sck_i}]
-//create_clock -name clk100 -period 10 -waveform {0 5} [get_nets {gclk100}]
-set_clock_groups -asynchronous -group [get_clocks {Clk_i}] -group [get_clocks {Sck_i}]
-set_false_path -from [get_clocks {Sck_i}] -to [get_clocks {Clk_i}] 
-set_false_path -from [get_clocks {Sck_i}] -to [get_clocks {Sck_i}] 
-set_false_path -from [get_clocks {Sck_i}] -to [get_clocks {clk60}] 
-set_false_path -from [get_clocks {clk60}] -to [get_clocks {Sck_i}] 
+create_clock -name Sck_i -period 16.667 -waveform {0 8.334} [get_ports {Sck_i}]
+create_generated_clock -name clk50 -source [get_ports {Clk_i}] -master_clock Clk_i -divide_by 12 -multiply_by 25 [get_nets {clk50}]
+create_generated_clock -name clk210 -source [get_ports {Clk_i}] -master_clock Clk_i -divide_by 4 -multiply_by 35 [get_nets {ClkGen/clk210Mhz}]
+create_generated_clock -name clk5 -source [get_ports {Clk_i}] -master_clock Clk_i -divide_by 120 -multiply_by 25 [get_nets {clk5}]
+create_generated_clock -name clk26dot25 -source [get_ports {Clk_i}] -master_clock Clk_i -divide_by 32 -multiply_by 35 [get_nets {clk26dot25}]
+create_generated_clock -name clk20 -source [get_ports {Clk_i}] -master_clock Clk_i -divide_by 30 -multiply_by 25 [get_nets {clk20}]
+create_generated_clock -name clk100 -source [get_ports {Clk_i}] -master_clock Clk_i -divide_by 6 -multiply_by 25 [get_nets {ClkGen/clk100Mhz}]
+create_generated_clock -name clk60 -source [get_ports {Clk_i}] -master_clock Clk_i -divide_by 14 -multiply_by 35 [get_nets {clk60}]
+create_generated_clock -name spiClkDds -source [get_ports {Clk_i}] -master_clock Clk_i -divide_by 12 -multiply_by 25 [get_nets {ClkAd9912Fpga_o_d}]
+set_clock_groups -asynchronous -group [get_clocks {Clk_i Sck_i}]
+set_false_path -from [get_regs {InitRst/signal_o_s1}] 
+report_timing -setup -max_paths 300 -max_common_paths 1
+report_timing -setup -from_clock [get_clocks {clk60}] -to_clock [get_clocks {clk60}] -max_paths 50 -max_common_paths 1
+report_timing -setup -from_clock [get_clocks {clk50}] -to_clock [get_clocks {clk50}] -max_paths 50 -max_common_paths 1
+report_timing -setup -from_clock [get_clocks {clk100}] -to_clock [get_clocks {clk100}] -max_paths 50 -max_common_paths 1

+ 175 - 0
src/src/CDC/synchronizer.v

@@ -0,0 +1,175 @@
+//---------------------------------------------------
+//------------- BASIC SYNCHRONIZER ------------------
+//---------------------------------------------------
+module basicSynchronizer #
+(	parameter Length = 2)
+(	
+	input Rst_i,	
+	input Clk_i,
+	input D_i,
+	output D_o
+);
+
+	reg [Length-1 : 0] dReg;
+
+	always @ (posedge Rst_i or posedge Clk_i)
+		if (Rst_i)
+			dReg <= 0;
+		else
+			dReg <= {dReg[Length-2 : 0], D_i};
+	
+	assign D_o = dReg[Length - 1];
+	
+endmodule
+
+//---------------------------------------------------
+//--------- EDGE-DETECTING SYNCHRONIZER -------------
+//---------------------------------------------------
+
+module edgeDetectingSynchronizer #
+( 
+	parameter Length = 2,
+	parameter EdgeType = "rising"
+)
+(		
+	input Rst_i,	
+	input Clk_i,
+	input D_i,
+	output D_o
+);
+
+	wire basicSyncOut;
+	reg outReg;
+
+	basicSynchronizer # (.Length(Length)) 
+	basicSynch (
+		.Rst_i(Rst_i),
+		.Clk_i(Clk_i),
+		.D_i(D_i),
+		.D_o(basicSyncOut)
+	);
+		
+	always @ (posedge Rst_i or posedge Clk_i)
+		if (Rst_i)
+			outReg <= 0;
+		else
+			outReg <= basicSyncOut;
+			
+	generate 
+		if (EdgeType == "rising")
+			assign D_o = (basicSyncOut & (~outReg));
+		else
+			assign D_o = ((~basicSyncOut) & (outReg));
+	endgenerate
+	
+endmodule
+
+
+//--------------------------------------------------------------------------
+//------------- FAST-TO-SLOW FREQUENCY DOMAIN SYNCHRONIZER -----------------
+//--------------------------------------------------------------------------
+module fastToSlowSynch
+(		
+	input Rst_i,	
+	input Clk_i,
+	input D_i,
+	output D_o
+);
+
+	reg din_r, dout_r, rsti;
+	
+	wire rsts = (Rst_i || rsti);
+	
+	always @ (posedge rsts or posedge D_i)
+		if (rsts)
+			din_r <= 0;
+		else
+			din_r <= 1;
+			
+	always @ (posedge Rst_i or posedge Clk_i)
+		if (Rst_i)
+			begin
+				dout_r <= 0;
+				rsti <= 0;
+			end
+		else 
+			if (din_r)
+				begin
+					dout_r <= 1;
+					rsti <= 1;
+				end
+			else if (dout_r)
+				begin
+					dout_r <= 0;
+					rsti <= 0;
+				end
+
+	assign D_o = dout_r;	
+	
+endmodule
+
+//--------------------------------------------------------------------------
+//------------- FAST-TO-SLOW FREQUENCY DOMAIN SYNCHRONIZER -----------------
+//--------------------------------------------------------------------------
+module fastToSlowSynchPosPulseStretch #
+(
+	parameter StretchInClock = 2,
+	parameter SyncLength = 2
+)
+(		
+	input Rst_i,
+	input D_i,
+	output D_o,
+	input ClkIn_i,
+	input ClkOut_i
+);
+
+	reg dStretched;
+	generate 
+		if (StretchInClock > 2)
+			begin
+				reg [StretchInClock-2:0] dShReg;
+				always @ (posedge ClkIn_i or posedge Rst_i)
+					if (Rst_i)
+						begin
+							dShReg <= 0;
+							dStretched <= 0;
+						end
+					else
+						begin
+							dShReg <= {dShReg[StretchInClock-3:0], D_i};
+							dStretched <= (D_i || (dShReg != 0)) ? 1 : 0;
+						end
+			end
+		else if (StretchInClock == 2)
+			begin
+				reg dReg;
+				always @ (posedge ClkIn_i or posedge Rst_i)
+					if (Rst_i)
+						begin
+							dReg <= 0;
+							dStretched <= 0;
+						end
+					else
+						begin
+							dReg <= D_i;
+							dStretched <= dReg | D_i;
+						end
+			end
+	endgenerate
+	
+	edgeDetectingSynchronizer #
+	( 
+		.Length(SyncLength),
+		.EdgeType("rising")
+	)
+	edgeSyncInst
+	(		
+		.Rst_i(Rst_i),
+		.Clk_i(ClkOut_i),
+		.D_i(dStretched),
+		.D_o(D_o)
+	);	
+	
+endmodule
+

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

@@ -17,6 +17,7 @@
 //
 //
 ////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////
 module FifoCtrl #(
 module FifoCtrl #(
+    parameter PARITY_CHECK = 0, // 1 - parity check enabled, 0 - disabled
     parameter IN_WIDTH = 24,
     parameter IN_WIDTH = 24,
     parameter WR_NUM = 1,
     parameter WR_NUM = 1,
     parameter OUT_WIDTH = 24
     parameter OUT_WIDTH = 24
@@ -31,6 +32,7 @@ module FifoCtrl #(
     input FifoEmpty_i,
     input FifoEmpty_i,
 
 
     output [OUT_WIDTH-1:0] Data_o,
     output [OUT_WIDTH-1:0] Data_o,
+    output reg [9:0] ParityBits_o, // 10 bits for parity check
     output reg ReadEn_o,
     output reg ReadEn_o,
     output reg  WriteEn_o,
     output reg  WriteEn_o,
     output reg ValRdData_o
     output reg ValRdData_o
@@ -46,7 +48,7 @@ localparam DATA_WIDTH = WR_NUM*IN_WIDTH;
 //================================================================================
 //================================================================================
 reg [DATA_WIDTH-1:0] dataReg;
 reg [DATA_WIDTH-1:0] dataReg;
 reg [1:0]  wrCnt;
 reg [1:0]  wrCnt;
-
+reg valRdData;
 //================================================================================
 //================================================================================
 //  ASSIGNMENTS
 //  ASSIGNMENTS
 //================================================================================
 //================================================================================
@@ -55,6 +57,22 @@ assign Data_o = dataReg[OUT_WIDTH-1:0];
 //================================================================================
 //================================================================================
 //	CODING
 //	CODING
 //================================================================================
 //================================================================================
+generate
+    if (PARITY_CHECK) begin
+        always @(posedge WrClk_i) begin 
+               if (Rst_i) begin 
+                    ParityBits_o <= 0;
+               end
+               else begin 
+                   if (WriteEn_o) begin
+                       ParityBits_o <= dataReg[95:86];
+                   end
+               end
+        end
+    end
+endgenerate
+        
+
 always @(posedge WrClk_i) begin 
 always @(posedge WrClk_i) begin 
     if (Rst_i) begin 
     if (Rst_i) begin 
         wrCnt <= 0;
         wrCnt <= 0;
@@ -165,7 +183,7 @@ always @(posedge RdClk_i) begin
         if (!FifoEmpty_i && !BusySpiM_i) begin 
         if (!FifoEmpty_i && !BusySpiM_i) begin 
             ReadEn_o <= 1'b1;
             ReadEn_o <= 1'b1;
         end
         end
-        else begin 
+        if (ReadEn_o) begin
             ReadEn_o <= 1'b0;
             ReadEn_o <= 1'b0;
         end
         end
     end
     end
@@ -173,16 +191,20 @@ end
 
 
 always @(posedge RdClk_i) begin 
 always @(posedge RdClk_i) begin 
     if (Rst_i) begin 
     if (Rst_i) begin 
-        ValRdData_o <= 1'b0;
+        valRdData <= 1'b0;
     end
     end
     else begin
     else begin
         if (!FifoEmpty_i && !BusySpiM_i) begin 
         if (!FifoEmpty_i && !BusySpiM_i) begin 
-            ValRdData_o <= 1'b1;
+            valRdData <= 1'b1;
         end
         end
-        else begin 
-            ValRdData_o <= 1'b0;
+        if (valRdData) begin 
+            valRdData <= 1'b0;
         end
         end
     end
     end
 end
 end
 
 
+always @(posedge RdClk_i) begin 
+    ValRdData_o <= valRdData;
+end
+
 endmodule
 endmodule

+ 30 - 5
src/src/InterfaceArbiter/InterfaceArbiter.v

@@ -39,7 +39,7 @@ module InterfaceArbiter
 	input Mosi3_i,
 	input Mosi3_i,
 	
 	
 	
 	
-	output DataVal_o,
+	output reg DataVal_o,
 	output reg TestTrig_o,
 	output reg TestTrig_o,
 	output [OUTWORDWIDTH-1:0] Data_o
 	output [OUTWORDWIDTH-1:0] Data_o
 );
 );
@@ -77,6 +77,8 @@ module InterfaceArbiter
 	reg ssRegRR;
 	reg ssRegRR;
 	
 	
 	reg spiMode;
 	reg spiMode;
+	reg spiModeSyncA;
+	reg spiModeSyncB;
 	
 	
 	wire ssPos;
 	wire ssPos;
 	reg ssPosR;
 	reg ssPosR;
@@ -101,13 +103,16 @@ module InterfaceArbiter
 	reg plsToggleSyncC;
 	reg plsToggleSyncC;
 	reg plsToggleSyncSignalR;
 	reg plsToggleSyncSignalR;
 
 
+	reg ss_sync1, ss_sync2, ss_sync3;
+	reg ss_posedge_detect;
+
 //================================================================================
 //================================================================================
 //  ASSIGNMENTS
 //  ASSIGNMENTS
 	assign ssPos = ssRegR & !ssRegRR;
 	assign ssPos = ssRegR & !ssRegRR;
 
 
 	
 	
-	assign DataVal_o = plsToggleSyncSignalR;
-	assign Data_o = (spiMode)? dataRegQSpi:dataRegSSpi;
+	// assign DataVal_o = plsToggleSyncSignalR;
+	assign Data_o = (spiModeSyncB)? dataRegQSpi:dataRegSSpi;
 
 
 	assign plsToggleSyncSignal = plsToggleSyncB^plsToggleSyncA;
 	assign plsToggleSyncSignal = plsToggleSyncB^plsToggleSyncA;
 
 
@@ -116,6 +121,15 @@ module InterfaceArbiter
 //================================================================================
 //================================================================================
 //  CODING
 //  CODING
 
 
+	always @(posedge Clk_i) begin 
+		if (Rst_i) begin 
+			DataVal_o <= 1'b0;
+		end
+		else begin 
+			DataVal_o <= plsToggleSyncSignalR;
+		end
+	end
+
 	always @(posedge Clk_i) begin 
 	always @(posedge Clk_i) begin 
     	if (Rst_i) begin 
     	if (Rst_i) begin 
     	    plsToggleSyncA <= 1'b0;
     	    plsToggleSyncA <= 1'b0;
@@ -277,14 +291,25 @@ module InterfaceArbiter
 			end
 			end
 		end
 		end
 	end
 	end
+
+	always @(posedge Clk_i) begin 
+		if (Rst_i) begin 
+			spiModeSyncA <= 1'b0;
+			spiModeSyncB <= 1'b0;
+		end
+		else begin 
+			spiModeSyncA <= spiMode;
+			spiModeSyncB <= spiModeSyncA;
+		end
+	end
 	
 	
 	always @(posedge Clk_i) begin
 	always @(posedge Clk_i) begin
 		if (!Rst_i) begin
 		if (!Rst_i) begin
 			if (currState == IDLE) begin
 			if (currState == IDLE) begin
-				if (!spiMode) begin
+				if (!spiModeSyncB) begin
 					wordsNum <= dataRegSSpi[17:1];
 					wordsNum <= dataRegSSpi[17:1];
 				end else begin
 				end else begin
-					wordsNum <= dataRegQSpi[21:19]+dataRegQSpi[17:16]+dataRegQSpi[15:12]+dataRegQSpi[10:9]+dataRegQSpi[7:6]+dataRegQSpi[4:3]+dataRegQSpi[2]+dataRegQSpi[1];
+					wordsNum <= dataRegQSpi[21:19]+dataRegQSpi[17:16]+dataRegQSpi[15:12]+dataRegQSpi[11:9]+dataRegQSpi[7:6]+dataRegQSpi[4:3]+dataRegQSpi[2]+dataRegQSpi[1];
 				end 
 				end 
 			end
 			end
 		end else begin
 		end else begin

+ 1 - 1
src/src/PacketAnalyzer4Mosi/PacketAnalyzer4Mosi.v

@@ -90,7 +90,7 @@ assign potOr 	= 	|dataSpiReg[4:3];
 assign dacOr 	= 	 dataSpiReg[2];
 assign dacOr 	= 	 dataSpiReg[2];
 assign attOr 	= 	 dataSpiReg[1];
 assign attOr 	= 	 dataSpiReg[1];
 assign shRegOr 	= 	|dataSpiReg[7:6];
 assign shRegOr 	= 	|dataSpiReg[7:6];
-assign maxOr 	= 	|dataSpiReg[10:9];
+assign maxOr 	= 	|dataSpiReg[11:9];
 assign gpioOr 	= 	|dataSpiReg[17:16];
 assign gpioOr 	= 	|dataSpiReg[17:16];
 
 
 assign selector = {ddsOr, gpioOr, lmxOr, maxOr, shRegOr, potOr, dacOr, attOr};
 assign selector = {ddsOr, gpioOr, lmxOr, maxOr, shRegOr, potOr, dacOr, attOr};

+ 127 - 36
src/src/SPIm/SpiM.v

@@ -17,7 +17,9 @@
 //
 //
 ////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////
 module SpiM #(
 module SpiM #(
-    parameter DATA_WIDTH = 24
+    parameter DATA_WIDTH = 24,
+    parameter CS_DELAY = 3'h0,
+    parameter IS_LMX_DELAY = 0
 )(
 )(
     input Clk_i,
     input Clk_i,
     input Rst_i,
     input Rst_i,
@@ -51,61 +53,150 @@ endfunction
 //	REG/WIRE
 //	REG/WIRE
 //================================================================================
 //================================================================================
 reg [log2(DATA_WIDTH)-1:0] ssCnt;
 reg [log2(DATA_WIDTH)-1:0] ssCnt;
+reg [2:0] ssCntDelay;
 reg [DATA_WIDTH-1:0] mosiReg;
 reg [DATA_WIDTH-1:0] mosiReg;
 reg	ssReg;
 reg	ssReg;
-
 //================================================================================
 //================================================================================
 //  ASSIGNMENTS
 //  ASSIGNMENTS
 //================================================================================
 //================================================================================
 assign Ss_o = ssReg;
 assign Ss_o = ssReg;
-assign Mosi_o = (!ssReg) ? mosiReg[DATA_WIDTH-1] : 1'b0;
-assign Sck_o = (!ssReg) ? Clk_i : 1'b0;
+generate 
+    if (IS_LMX_DELAY) begin 
+        assign Sck_o = (!ssReg && ssCnt < DATA_WIDTH && (ssCntDelay == 0)) ? Clk_i : 1'b0;
+        assign Mosi_o = (!ssReg && ssCnt < DATA_WIDTH && (ssCntDelay == 0)) ? mosiReg[DATA_WIDTH-1] : 1'b0;
+    end
+    else begin 
+        assign Sck_o = (!ssReg) ? Clk_i : 1'b0;
+        assign Mosi_o = (!ssReg) ? mosiReg[DATA_WIDTH-1] : 1'b0;
+    end
+endgenerate
+
 assign Busy_o = !ssReg;
 assign Busy_o = !ssReg;
 
 
 //================================================================================
 //================================================================================
 //	CODING
 //	CODING
 //================================================================================
 //================================================================================
-always @(negedge Clk_i) begin 
-    if (Rst_i) begin 
-        ssCnt <= 7'h0;
-    end
-    else begin
-        if (!ssReg) begin
-			ssCnt <= ssCnt+1;
-		end else begin
-			ssCnt <= 0;
-		end
-    end
-end
+generate
+    if (IS_LMX_DELAY) begin
+        always @(negedge Clk_i) begin 
+            if (Rst_i) begin 
+                ssCnt <= 7'h0;
+            end
+            else begin 
+                if (!ssReg ) begin 
+                    if (ssCntDelay == 3'h0) begin
+                        ssCnt <= ssCnt + 1;
+                    end
+                end
+                else begin
+                    ssCnt <= 0;
+                end
+            end
+        end
+		
+        always @(negedge Clk_i) begin 
+         	if (Rst_i) begin 
+            	ssCntDelay <= 3'h0;
+         	end
+         	else begin
+            	if (ssReg) begin
+					ssCntDelay <= CS_DELAY;
+				end
+				else begin
+					if (ssCntDelay != 3'h0) begin
+						ssCntDelay <= ssCntDelay - 1;
+					end
+				end
+         	end
+        end
 
 
-always @(negedge Clk_i) begin 
-    if (Rst_i) begin 
-        mosiReg <= 0;
+        always @(negedge Clk_i) begin 
+            if (Rst_i) begin 
+                mosiReg <= 0;
+            end
+            else begin 
+                if ((!ssReg) && (ssCntDelay == 3'h0)) begin 
+                    mosiReg <= mosiReg << 1;
+                end
+                else begin
+                    if (Val_i) begin
+                        mosiReg <= SpiData_i;
+                    end
+                end
+            end
+        end
     end
     end
-    else begin 
-        if (!ssReg) begin 
-            mosiReg <= mosiReg << 1;
+    else begin
+        always @(negedge Clk_i) begin 
+            if (Rst_i) begin 
+                ssCnt <= 7'h0;
+            end
+            else begin 
+                if (!ssReg ) begin 
+                    ssCnt <= ssCnt + 1;
+                end
+                else begin
+                    ssCnt <= 0;
+                end
+            end
         end
         end
-        else begin
-            if (Val_i) begin
-                mosiReg <= SpiData_i;
+		always @(negedge Clk_i) begin 
+			if (Rst_i) begin 
+				ssCntDelay <= 3'h0;
+			end
+			else begin
+				ssCntDelay <= 3'h0;
+			end
+		end
+        always @(negedge Clk_i) begin 
+            if (Rst_i) begin 
+                mosiReg <= 0;
+            end
+            else begin 
+                if (!ssReg) begin 
+                    mosiReg <= mosiReg << 1;
+                end
+                else begin
+                    if (Val_i) begin
+                        mosiReg <= SpiData_i;
+                    end
+                end
             end
             end
         end
         end
     end
     end
-end
+endgenerate
 
 
-always @(negedge Clk_i) begin 
-    if (Rst_i) begin 
-        ssReg <= 1'b1;
+generate 
+    if (IS_LMX_DELAY) begin 
+        always @(negedge Clk_i) begin 
+            if (Rst_i) begin 
+                ssReg <= 1'b1;
+            end
+            else begin 
+                if (Val_i) begin
+                    ssReg <= 0;
+                end
+                if (ssCnt == DATA_WIDTH) begin
+                    ssReg <= 1;
+                end
+            end
+        end
     end
     end
     else begin 
     else begin 
-        if (Val_i) begin
-			ssReg <= 0;
-		end
-		if (ssCnt == DATA_WIDTH-1) begin
-			ssReg <= 1;
-		end
+        always @(negedge Clk_i) begin 
+            if (Rst_i) begin 
+                ssReg <= 1'b1;
+            end
+            else begin 
+                if (Val_i) begin
+                    ssReg <= 0;
+                end
+                if (ssCnt == DATA_WIDTH - 1 ) begin
+                    ssReg <= 1;
+                end
+            end
+        end
     end
     end
-end
+endgenerate
 
 
 endmodule
 endmodule

+ 120 - 0
src/src/SpiS/SpiSlave.v

@@ -0,0 +1,120 @@
+module SpiSlave#(
+    parameter WIDTH = 80
+)(
+    input Clk_i,
+    input Rst_i,
+
+    input Sck_i,
+    input Ss_i,
+    input Mosi_i,
+
+    output reg [WIDTH-1:0] Data_o,
+    output reg Val_o
+);
+
+//================================================================================
+//	                                REG/WIRE
+//================================================================================
+reg [WIDTH-1:0] dataShiftReg;
+
+reg ssReg;
+reg ssPosedge;
+
+reg plsToggle;
+reg plsToggleSyncA;
+reg plsToggleSyncB;
+reg plsToggleSyncC;
+wire valPulseSync = plsToggleSyncB ^ plsToggleSyncA;
+
+//================================================================================
+//	                                CODE
+//================================================================================
+always @(posedge Clk_i) begin 
+    ssReg <= Ss_i;
+end
+
+always @(posedge Clk_i) begin 
+    if (Rst_i) begin 
+        ssPosedge <= 1'b0;
+    end
+    else begin 
+        if (!ssReg && Ss_i) begin 
+            ssPosedge <= 1'b1;
+        end
+        else if (ssPosedge) begin 
+            ssPosedge <= 1'b0;
+        end
+    end
+end
+
+always @(posedge Clk_i) begin 
+	if (Rst_i) begin 
+	    plsToggleSyncA <= 1'b0;
+	    plsToggleSyncB <= 1'b0;
+	end
+	else begin 
+	    plsToggleSyncA <= plsToggle;
+	    plsToggleSyncB <= plsToggleSyncA;
+	end
+end
+always @(posedge Clk_i) begin 
+    if (Rst_i) begin 
+        plsToggleSyncC <= 1'b0;
+    end
+    else begin
+        plsToggleSyncC <= plsToggleSyncB;
+    end
+end
+
+always @(posedge Ss_i or posedge Rst_i) begin 
+	if (Rst_i) begin 
+		plsToggle <= 1'b0;
+	end
+	else begin 
+		if (Ss_i) begin 
+			plsToggle <= ~plsToggle;
+		end
+		else begin 
+			plsToggle <= plsToggle;
+		end
+	end
+end
+
+always @(posedge Sck_i or posedge Rst_i) begin 
+    if (Rst_i) begin 
+        dataShiftReg <= {WIDTH{1'b0}};
+    end
+    else begin 
+        if (!Ss_i) begin 
+            dataShiftReg <= {dataShiftReg[WIDTH-2:0], Mosi_i};
+        end
+    end
+end
+
+always @(posedge Clk_i) begin 
+    if (Rst_i) begin 
+        Val_o <= 1'b0;
+    end
+    else begin 
+        if (valPulseSync) begin 
+            Val_o <= 1'b1;
+        end
+        else begin
+            Val_o <= 1'b0;
+        end
+    end
+end
+
+always @(posedge Clk_i) begin 
+    if (Rst_i) begin 
+        Data_o <= 1'b0;
+    end
+    else begin 
+        if (valPulseSync) begin 
+            Data_o <= dataShiftReg;
+        end
+    end
+end
+
+
+endmodule

Dosya farkı çok büyük olduğundan ihmal edildi
+ 995 - 959
src/src/Top/ExtQspiMEmul.v


+ 0 - 3
src/src/Top/ExtSpiMEmul.v

@@ -166,9 +166,6 @@ module ExtSpiMEmul (
         end
         end
     end
     end
     
     
-    
-    
-    
     always @(*) begin
     always @(*) begin
         if (SelSt_i) begin 
         if (SelSt_i) begin 
             if (PulsePol_i) begin 
             if (PulsePol_i) begin 

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

@@ -210,6 +210,13 @@ localparam LED_TICK_RATE = 48000000;//0.5Hz 24MHz
 	reg [31:0] ledCnt;
 	reg [31:0] ledCnt;
 	/* LedReg */
 	/* LedReg */
 	reg ledReg;
 	reg ledReg;
+	/* Result of test */
+	reg resultOfTest;
+
+	/* Spi Slave */
+	wire valFromSpiSlave;
+	wire [79:0] dataFromSpiSlave;
+	reg currentSample;
 
 
 //================================================================================
 //================================================================================
 //  ASSIGNMENTS
 //  ASSIGNMENTS
@@ -245,7 +252,9 @@ assign AnyFlag_o = anyFlag;//Debug-only
 
 
 assign servInfo	= {BOARD_VER, FIRMWARE_VER};
 assign servInfo	= {BOARD_VER, FIRMWARE_VER};
 
 
-assign FpgaLed_o = ledReg;
+// assign FpgaLed_o = resultOfTest;
+assign FpgaLed_o = ledReg; //Blink Led
+// assign FpgaLed_o = 1'b1; //Golden-Image
 
 
 //================================================================================
 //================================================================================
 //  CODING
 //  CODING
@@ -371,6 +380,41 @@ always @(*) begin
 	end
 	end
 end
 end
 
 
+SpiSlave #(
+	.WIDTH		(80)
+) SpiS_inst (
+	.Clk_i		(clk50),
+	.Rst_i		(initRst),
+	.Ss_i		(CsAd9912Fpga_o),
+	.Mosi_i		(MosiAd9912Fpga_o),
+	.Sck_i		(ClkAd9912Fpga_o),
+	.Val_o		(valFromSpiSlave),
+	.Data_o		(dataFromSpiSlave)
+);
+
+/* Spi Master Check */
+always @(posedge clk50) begin 
+	if (Rst_i) begin
+		resultOfTest <= 1'b0;
+		currentSample <= 1'b0;
+	end
+	else begin
+		if (valFromSpiSlave) begin 
+			if ((currentSample == 0) && dataFromSpiSlave == 80'hAAAAAAAAAAAAAAAAAAAA ) begin 
+				currentSample <= 1'b1;
+				resultOfTest <= 1'b0;
+			end
+			else if ((currentSample == 1) && dataFromSpiSlave == 80'h55555555555555555555 ) begin 
+				currentSample <= 1'b0;
+				resultOfTest <= 1'b0;
+			end
+			else begin 
+				resultOfTest <= 1'b1; // Ошибка, данные не совпадают
+			end  
+		end
+	end
+end
+
 ClkGen ClkGen
 ClkGen ClkGen
 (
 (
 	.Clk24Mhz_i			(Clk_i),
 	.Clk24Mhz_i			(Clk_i),
@@ -503,6 +547,7 @@ DDSWrapper #(
 	.WrClk_i			(clk60),
 	.WrClk_i			(clk60),
 	.RdClk_i			(clk50),
 	.RdClk_i			(clk50),
 	.Rst_i				(initRst),
 	.Rst_i				(initRst),
+	.RstExt_i			(Rst_i), //External reset for DDS
 	.DdsWordNum_i		(ddsWordNum),
 	.DdsWordNum_i		(ddsWordNum),
 	.DdsWordNumVal_i	( valWordNum && (ddsWordNum != 0)),
 	.DdsWordNumVal_i	( valWordNum && (ddsWordNum != 0)),
 	.DdsDirectFlag_i	(flagDirectDds),
 	.DdsDirectFlag_i	(flagDirectDds),

+ 5 - 5
src/src/Top/TopSbTmsgTb.sv

@@ -1,4 +1,4 @@
-`timescale 1ns/1ns
+`timescale 1ns/1ps
 
 
 module TopSbTmsgTb(inout Mosi1_io);
 module TopSbTmsgTb(inout Mosi1_io);
    parameter CLK_PERIOD = 8.13; // Clock period in ns
    parameter CLK_PERIOD = 8.13; // Clock period in ns
@@ -131,7 +131,7 @@ localparam        POTWordNum = 2'd2;
 localparam        DACWordNum = 1'd1;
 localparam        DACWordNum = 1'd1;
 localparam        ATTWordNum = 1'd1;
 localparam        ATTWordNum = 1'd1;
 localparam [1:0]  ShRegWordNum = 2'd1;
 localparam [1:0]  ShRegWordNum = 2'd1;
-localparam [1:0]  MaxWordNum =   2'd2;
+localparam [2:0]  MaxWordNum =   3'd2;
 localparam [1:0]  GPIOWordNum =  2'd1;
 localparam [1:0]  GPIOWordNum =  2'd1;
 
 
 localparam [23:0] Max2870Header         = {1'h1, 1'h0, 3'h0, 1'h0, 2'h0, 4'h0, 1'h0, MaxWordNum, 1'h0, 2'h0, 1'h0, 2'h0, 1'h0, 1'h0, 1'h1};
 localparam [23:0] Max2870Header         = {1'h1, 1'h0, 3'h0, 1'h0, 2'h0, 4'h0, 1'h0, MaxWordNum, 1'h0, 2'h0, 1'h0, 2'h0, 1'h0, 1'h0, 1'h1};
@@ -167,7 +167,7 @@ localparam [23:0] GPIO_REG = {DDS_SAW1_FPGA,GPIO_ADRF_V2,GPIO_ADRF_V1,REF_OFFSET
 //***********************************************
 //***********************************************
 
 
 // localparam [23:0] AllDevQSPIHeader = {1'h1, LMXWordNum, DDSWordNum, POTWordNum, DACWordNum,ATTWordNum, ShRegWordNum,MaxWordNum, GPIOWordNum, 7'h1};
 // localparam [23:0] AllDevQSPIHeader = {1'h1, LMXWordNum, DDSWordNum, POTWordNum, DACWordNum,ATTWordNum, ShRegWordNum,MaxWordNum, GPIOWordNum, 7'h1};
-localparam [23:0] AllDevQSPIHeader = {1'h1, 1'h0,DDSWordNum,1'h0,GPIOWordNum, LMXWordNum,1'h0,MaxWordNum,1'h0,ShRegWordNum,1'h0,POTWordNum,DACWordNum,ATTWordNum,1'h1};
+localparam [23:0] AllDevQSPIHeader = {1'h1, 1'h0,DDSWordNum,1'h0,GPIOWordNum, LMXWordNum,MaxWordNum,1'h0,ShRegWordNum,1'h0,POTWordNum,DACWordNum,ATTWordNum,1'h1};
 
 
 //***********************************************
 //***********************************************
 //	           ASSIGNS
 //	           ASSIGNS
@@ -179,7 +179,7 @@ assign Mosi0_o = (modeSel) ? mosi0Q : mosi0R;
 assign Mosi1_io = (anyFlag) ? 1'bz : Mosi1_o;
 assign Mosi1_io = (anyFlag) ? 1'bz : Mosi1_o;
 assign MisoLdLmx_i = 1'b1;
 assign MisoLdLmx_i = 1'b1;
 
 
-assign emptyFlagTx = (trCnt > 74) ? 1'b1 : 1'b0;
+assign emptyFlagTx = (trCnt > 71) ? 1'b1 : 1'b0;
 assign QSPITotalWordNum = LMXWordNum + DDSWordNum + POTWordNum + DACWordNum + ATTWordNum + ShRegWordNum + MaxWordNum + GPIOWordNum; 
 assign QSPITotalWordNum = LMXWordNum + DDSWordNum + POTWordNum + DACWordNum + ATTWordNum + ShRegWordNum + MaxWordNum + GPIOWordNum; 
 
 
 assign currClk = (modeSel) ? Clk60 : Clk10;
 assign currClk = (modeSel) ? Clk60 : Clk10;
@@ -397,7 +397,7 @@ always_comb begin
         .Lag_i(LAG_i),
         .Lag_i(LAG_i),
         .Lead_i(LEAD_i),
         .Lead_i(LEAD_i),
         .EndianSel_i(EndianSel_i),
         .EndianSel_i(EndianSel_i),
-        .Stop_i(6'h0),
+        .Stop_i(6'h3),
         .PulsePol_i(PulsePol_i),
         .PulsePol_i(PulsePol_i),
         .Mosi0_o(mosi0R),
         .Mosi0_o(mosi0R),
         .Sck_o(SckR),
         .Sck_o(SckR),

+ 159 - 18
src/src/WrapFifoChain/DDSWrapper.v

@@ -24,6 +24,7 @@ module DDSWrapper #(
     input WrClk_i,
     input WrClk_i,
     input RdClk_i,
     input RdClk_i,
     input Rst_i,
     input Rst_i,
+	input RstExt_i,
 	input [2:0] DdsWordNum_i,
 	input [2:0] DdsWordNum_i,
 	input DdsWordNumVal_i,
 	input DdsWordNumVal_i,
 	input DdsDirectFlag_i,
 	input DdsDirectFlag_i,
@@ -33,6 +34,8 @@ module DDSWrapper #(
 	output reg DdsSyncFpga_o,
 	output reg DdsSyncFpga_o,
 	output [2:0] DdsWordNumReg_o,
 	output [2:0] DdsWordNumReg_o,
 
 
+	output reg ResultOfTest_o,
+
     output Ss_o,
     output Ss_o,
     output Sck_o,
     output Sck_o,
     output Mosi_o
     output Mosi_o
@@ -57,16 +60,95 @@ wire ddsFifoEmpty;
 
 
 reg ssR;
 reg ssR;
 reg ssReg;
 reg ssReg;
-reg ddsDirectFlagR;
+// reg ddsDirectFlagR;
+reg ddsDirectFlagSyncA;
+reg ddsDirectFlagSyncB;
+reg ddsDirectFlagSyncC;
 reg [2:0] ddsWordNumReg;
 reg [2:0] ddsWordNumReg;
-reg [2:0] ddsWordNumRegSync;
+reg [2:0] ddsWordNumRegRdDomain;
+reg [2:0] ddsWordNumRegSyncA;
+reg [2:0] ddsWordNumRegSyncB;
+
+reg [2:0] ddsSyncCnt;
+
+/* WordNumVal Synchronization */
+wire ddsWordNumValSyncRdDomain;
+reg plsToggleWordNumVal;
+reg plsToggleWordNumValSyncA;
+reg plsToggleWordNumValSyncB;
+
+
+reg plsToggle;
+reg plsToggleSyncA;
+reg plsToggleSyncB;
+reg ssPosEdge;
+wire ssPosEdgeSync;
+wire [63:0] dataFromDdsFifoCut;
+reg [9:0] parityErrors;      // Ошибки чётности для каждого байта
+wire [9:0] byteParityBits;   // Вычисленные биты чётности
+wire [9:0] storedParityBits; // Сохранённые биты чётности
+
+// Промежуточные регистры для улучшения тайминга
+reg ssNegEdge;
+reg isLastWord;
+reg directFlagRisingEdge;
 //================================================================================
 //================================================================================
 //	                                ASSIGNMENTS
 //	                                ASSIGNMENTS
 //================================================================================ 
 //================================================================================ 
 assign DdsWordNumReg_o = ddsWordNumReg;
 assign DdsWordNumReg_o = ddsWordNumReg;
+assign ssPosEdgeSync = plsToggleSyncB^plsToggleSyncA;
+assign dataFromDdsFifoCut = dataFromDdsFifo[63:0];
+/* Parity check for each byte */
+assign byteParityBits[0] = ^dataFromDdsFifo[7:0];
+assign byteParityBits[1] = ^dataFromDdsFifo[15:8];
+assign byteParityBits[2] = ^dataFromDdsFifo[23:16];
+assign byteParityBits[3] = ^dataFromDdsFifo[31:24];
+assign byteParityBits[4] = ^dataFromDdsFifo[39:32];
+assign byteParityBits[5] = ^dataFromDdsFifo[47:40];
+assign byteParityBits[6] = ^dataFromDdsFifo[55:48];
+assign byteParityBits[7] = ^dataFromDdsFifo[63:56];
+assign byteParityBits[8] = ^dataFromDdsFifo[71:64];
+assign byteParityBits[9] = ^dataFromDdsFifo[79:72];
+
+/* ddsWordNumVal Synchronization */
+assign ddsWordNumValSyncRdDomain = plsToggleWordNumValSyncB^plsToggleWordNumValSyncA;
 //==========================================================================//
 //==========================================================================//
 //									CODING									//
 //									CODING									//
 //==========================================================================//
 //==========================================================================//
+always @(posedge WrClk_i) begin 
+	if (Rst_i) begin 
+		plsToggleWordNumVal <= 1'b0;
+	end
+	else if (DdsWordNumVal_i) begin 
+		plsToggleWordNumVal <= ~plsToggleWordNumVal;
+	end
+	else begin 
+		plsToggleWordNumVal <= plsToggleWordNumVal;
+	end
+end
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		plsToggleWordNumValSyncA <= 1'b0;
+		plsToggleWordNumValSyncB <= 1'b0;
+	end
+	else begin 
+		plsToggleWordNumValSyncA <= plsToggleWordNumVal;
+		plsToggleWordNumValSyncB <= plsToggleWordNumValSyncA;
+	end
+end
+
+/* Check parity bits */
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		parityErrors <= 10'h0;
+	end
+	else begin 
+		if (readEnDds) begin
+			parityErrors <= (storedParityBits ^ byteParityBits);
+		end
+	end
+end 
+
 always @(posedge WrClk_i) begin
 always @(posedge WrClk_i) begin
 	if (Rst_i) begin 
 	if (Rst_i) begin 
 		ssR <= 1'b0;
 		ssR <= 1'b0;
@@ -78,10 +160,14 @@ end
 
 
 always @(posedge RdClk_i) begin 
 always @(posedge RdClk_i) begin 
 	if (Rst_i) begin 
 	if (Rst_i) begin 
-		ddsDirectFlagR <= 1'b0;
+		ddsDirectFlagSyncA <= 1'b0;
+		ddsDirectFlagSyncB <= 1'b0;
+		ddsDirectFlagSyncC <= 1'b0;
 	end
 	end
 	else begin 
 	else begin 
-		ddsDirectFlagR <= DdsDirectFlag_i;
+		ddsDirectFlagSyncA <= DdsDirectFlag_i;
+		ddsDirectFlagSyncB <= ddsDirectFlagSyncA;
+		ddsDirectFlagSyncC <= ddsDirectFlagSyncB;
 	end
 	end
 end
 end
 
 
@@ -89,6 +175,60 @@ always @(posedge RdClk_i) begin
 	ssReg <= Ss_o;
 	ssReg <= Ss_o;
 end
 end
 
 
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		ssPosEdge <= 1'b0;
+	end
+	else begin 
+		ssPosEdge <= (Ss_o && !ssReg);
+	end
+end
+
+// Детекция спадающего фронта SS для улучшения тайминга
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		ssNegEdge <= 1'b0;
+	end
+	else begin 
+		ssNegEdge <= (!Ss_o && ssReg);
+	end
+end
+
+// Предварительное вычисление условий для улучшения тайминга
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		isLastWord <= 1'b0;
+		directFlagRisingEdge <= 1'b0;
+	end
+	else begin 
+		isLastWord <= (ddsWordNumRegSyncB == 3'h1);
+		directFlagRisingEdge <= (ddsDirectFlagSyncC && !ddsDirectFlagSyncB);
+	end
+end
+
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		plsToggle <= 1'b0;
+	end
+	else if (ssPosEdge) begin 
+		plsToggle <= ~plsToggle;
+	end
+	else begin 
+		plsToggle <= plsToggle;
+	end
+end
+
+always @(posedge WrClk_i) begin 
+	if (Rst_i) begin 
+		plsToggleSyncA <= 1'b0;
+		plsToggleSyncB <= 1'b0;
+	end
+	else begin 
+		plsToggleSyncA <= plsToggle;
+		plsToggleSyncB <= plsToggleSyncA;
+	end
+end
+
 always @(posedge WrClk_i) begin
 always @(posedge WrClk_i) begin
 	if (Rst_i) begin 
 	if (Rst_i) begin 
 		ddsWordNumReg <= 3'h0;
 		ddsWordNumReg <= 3'h0;
@@ -98,7 +238,7 @@ always @(posedge WrClk_i) begin
 			ddsWordNumReg <= DdsWordNum_i>>2;
 			ddsWordNumReg <= DdsWordNum_i>>2;
 		end
 		end
 		else begin 
 		else begin 
-			if (Ss_o && !ssR) begin 
+			if (ssPosEdgeSync && (ddsWordNumReg > 0)) begin 
 				ddsWordNumReg <= ddsWordNumReg-1;
 				ddsWordNumReg <= ddsWordNumReg-1;
 			end
 			end
 		end
 		end
@@ -107,10 +247,12 @@ end
 
 
 always @(posedge RdClk_i) begin 
 always @(posedge RdClk_i) begin 
 	if (Rst_i) begin 
 	if (Rst_i) begin 
-		ddsWordNumRegSync <= 3'h0;
+		ddsWordNumRegSyncA <= 3'h0;
+		ddsWordNumRegSyncB <= 3'h0;
 	end
 	end
 	else begin 
 	else begin 
-		ddsWordNumRegSync <= ddsWordNumReg;
+		ddsWordNumRegSyncA <= ddsWordNumReg;
+		ddsWordNumRegSyncB <= ddsWordNumRegSyncA;
 	end
 	end
 end
 end
 
 
@@ -119,25 +261,23 @@ always @(posedge RdClk_i) begin
 		DdsSyncFpga_o <= 1'b0;
 		DdsSyncFpga_o <= 1'b0;
 	end
 	end
 	else begin
 	else begin
-		if (ddsDirectFlagR && !DdsDirectFlag_i) begin 
-				DdsSyncFpga_o <= 1'b1;
+		if (directFlagRisingEdge) begin 
+			DdsSyncFpga_o <= 1'b1;
 		end 
 		end 
-		else if ((!Ss_o && ssReg) && (ddsWordNumRegSync != 0)) begin 
+		else if (ssNegEdge && (ddsWordNumRegSyncB != 0)) begin 
 			DdsSyncFpga_o <= 1'b0;
 			DdsSyncFpga_o <= 1'b0;
 		end
 		end
+		else if (isLastWord && ssPosEdge) begin 
+			DdsSyncFpga_o <= 1'b1;
+		end
 		else begin 
 		else begin 
-			if (ddsWordNumRegSync == 3'h1 && (Ss_o && !ssReg)) begin 
-				DdsSyncFpga_o <= 1'b1;
-			end
-			else begin 
-				DdsSyncFpga_o <= 1'b0;
-			end
+			DdsSyncFpga_o <= DdsSyncFpga_o; // Удерживаем состояние
 		end
 		end
 	end
 	end
-end 
-
+end
 
 
 FifoCtrl #(
 FifoCtrl #(
+	.PARITY_CHECK	(1),
 	.IN_WIDTH		(IN_WIDTH),
 	.IN_WIDTH		(IN_WIDTH),
 	.WR_NUM			(WR_NUM),
 	.WR_NUM			(WR_NUM),
 	.OUT_WIDTH		(OUT_WIDTH)
 	.OUT_WIDTH		(OUT_WIDTH)
@@ -152,6 +292,7 @@ FifoCtrl #(
 	.FifoFull_i		(ddsFifoFull),
 	.FifoFull_i		(ddsFifoFull),
 	.FifoEmpty_i	(ddsFifoEmpty),
 	.FifoEmpty_i	(ddsFifoEmpty),
 	.Data_o			(dataFromDdsFifoCtrl),
 	.Data_o			(dataFromDdsFifoCtrl),
+	.ParityBits_o	(storedParityBits),
 	.ReadEn_o		(readEnDds),
 	.ReadEn_o		(readEnDds),
 	.WriteEn_o		(writeEnDds),
 	.WriteEn_o		(writeEnDds),
 	.ValRdData_o	(valRdDataDDS)
 	.ValRdData_o	(valRdDataDDS)

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

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

+ 112 - 122
src/src/WrapFifoChain/Fifo16x3/Fifo16x3.v

@@ -1,11 +1,11 @@
 //
 //
 //Written by GowinSynthesis
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.02"
-//Thu Apr 25 16:04:59 2024
+//Tool Version "V1.9.11.02 (64-bit)"
+//Thu Jun 26 11:09:42 2025
 
 
 //Source file index table:
 //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"
+//file0 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect begin_protected
 `pragma protect version="2.3"
 `pragma protect version="2.3"
@@ -17,129 +17,119 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `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_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
 `pragma protect key_block
-W3HrOAkNrb9fyqeg7xkmFYNJEXf+2L4xAs1NganKSsLdhqtqnzGilurt3rhiuavKOthhpj0CIxX1
-ZedEQJHy1YoMcnQT/3ZR2V3s3tn5tIa0uYYmQ8HT3UmPy8pHZ9XT/zgb2OmdgjJxDOHxDE7oxPBw
-9cYYeTV+3m3U6h+r4eV1SJQSYMc4UjdcIpk/DWgts59MtW68EHUmHQxC7WbB6lq0/1Vwga5FznK/
-+9xK15Qi3TKg78a8SyeARfBIq/ZyaIeoIf0QdOas+rARU4dzyqiiiy7sm42o4pyAR9PegR9hQGE7
-t/bYNDjO0d+SB5/il7zBD/3fBQDGuJm2Z5KM7Q==
+QR+ckbaNhwhyNg1U6WQO8hAldjyP1LUGylMi4frppjDlHJUE0X3d+p3Tk5B3/H8+5b3TT5ll9yWS
+hQEMHDHgXWhmhvSVtOcgYeyVDQ4uxPqhDC/KDMvdUCnROdm8xXb9tnuG98pfoykrhIs+YRaHDUM2
+VO0C9RFXkwxOYbK0i0mn9VlrKifYegxh3n48y0fBaeUHX6BWFKIwN7QK32QY4nZhjeghtHBrSW5y
+xfPOqpFlWxLyxBDYtZvmp9kGjqYNnLbTCVIAjEXCavEjTN8T0AQv2RCFVs5zwCxNhluaiBf8kT3b
+nrwY8z/Nec9IUKlRrVQ6JMH6jCXJWlZETP2N5w==
 
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=6368)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=5808)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
 `pragma protect data_block
-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
+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
 `pragma protect end_protected
 `pragma protect end_protected
 module Fifo16x3 (
 module Fifo16x3 (
   Data,
   Data,

+ 79 - 101
src/src/WrapFifoChain/Fifo16x3/Fifo16x3.vo

@@ -1,8 +1,8 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
-//File Title: Post-PnR Simulation Model file
-//Tool Version: V1.9.9.02
-//Created Time: Thu Apr 25 16:04:59 2024
+//File Title: Post-PnR Verilog Simulation Model file
+//Tool Version: V1.9.11.02 (64-bit)
+//Created Time: Thu Jun 26 11:09:43 2025
 
 
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 module Fifo16x3(
 module Fifo16x3(
@@ -37,30 +37,30 @@ wire VCC;
 wire WrClk;
 wire WrClk;
 wire WrEn;
 wire WrEn;
 wire \fifo_inst/n20_5 ;
 wire \fifo_inst/n20_5 ;
-wire \fifo_inst/n26_4 ;
-wire \fifo_inst/n217_4 ;
+wire \fifo_inst/n24_3 ;
+wire \fifo_inst/n167_3 ;
+wire \fifo_inst/n218_4 ;
 wire \fifo_inst/rempty_val ;
 wire \fifo_inst/rempty_val ;
 wire \fifo_inst/wfull_val_7 ;
 wire \fifo_inst/wfull_val_7 ;
 wire \fifo_inst/wfull_val1 ;
 wire \fifo_inst/wfull_val1 ;
 wire \fifo_inst/wfull_val1_0 ;
 wire \fifo_inst/wfull_val1_0 ;
 wire \fifo_inst/Full_1 ;
 wire \fifo_inst/Full_1 ;
-wire \fifo_inst/Equal.wbinnext_0_7 ;
-wire \fifo_inst/rempty_val_8 ;
+wire \fifo_inst/Equal.wbinnext_0_8 ;
+wire \fifo_inst/rbin_num_next_0_10 ;
+wire \fifo_inst/rempty_val1 ;
 wire \fifo_inst/wfull_val1_2 ;
 wire \fifo_inst/wfull_val1_2 ;
 wire \fifo_inst/wfull_val1_3 ;
 wire \fifo_inst/wfull_val1_3 ;
 wire \fifo_inst/Full_1_2 ;
 wire \fifo_inst/Full_1_2 ;
 wire \fifo_inst/Full_2 ;
 wire \fifo_inst/Full_2 ;
 wire \fifo_inst/n4_6 ;
 wire \fifo_inst/n4_6 ;
 wire \fifo_inst/n9_6 ;
 wire \fifo_inst/n9_6 ;
-wire [0:0] \fifo_inst/Equal.rgraynext ;
 wire [0:0] \fifo_inst/Equal.wgraynext ;
 wire [0:0] \fifo_inst/Equal.wgraynext ;
-wire [1:0] \fifo_inst/rbin_num_next ;
 wire [1:1] \fifo_inst/Equal.wbinnext ;
 wire [1:1] \fifo_inst/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_r ;
 wire [1:0] \fifo_inst/reset_w ;
 wire [1:0] \fifo_inst/reset_w ;
 wire [1:0] \fifo_inst/rbin_num ;
 wire [1:0] \fifo_inst/rbin_num ;
-wire [1:0] \fifo_inst/Equal.rq1_wptr ;
-wire [1:0] \fifo_inst/Equal.rq2_wptr ;
 wire [0:0] \fifo_inst/rptr ;
 wire [0:0] \fifo_inst/rptr ;
 wire [1:0] \fifo_inst/wptr ;
 wire [1:0] \fifo_inst/wptr ;
 wire [0:0] \fifo_inst/Equal.wbin ;
 wire [0:0] \fifo_inst/Equal.wbin ;
@@ -82,41 +82,39 @@ LUT4 \fifo_inst/n20_s1  (
 	.F(\fifo_inst/n20_5 )
 	.F(\fifo_inst/n20_5 )
 );
 );
 defparam \fifo_inst/n20_s1 .INIT=16'h5300;
 defparam \fifo_inst/n20_s1 .INIT=16'h5300;
-LUT3 \fifo_inst/n26_s1  (
-	.I0(RdEn),
-	.I1(Empty),
-	.I2(\fifo_inst/rempty_val ),
-	.F(\fifo_inst/n26_4 )
-);
-defparam \fifo_inst/n26_s1 .INIT=8'h0E;
-LUT3 \fifo_inst/Equal.rgraynext_0_s0  (
-	.I0(\fifo_inst/rbin_num [0]),
-	.I1(\fifo_inst/rbin_num_next [0]),
-	.I2(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/Equal.rgraynext [0])
+LUT2 \fifo_inst/n24_s0  (
+	.I0(Empty),
+	.I1(RdEn),
+	.F(\fifo_inst/n24_3 )
 );
 );
-defparam \fifo_inst/Equal.rgraynext_0_s0 .INIT=8'h1E;
+defparam \fifo_inst/n24_s0 .INIT=4'h4;
 LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
 LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
-	.I0(\fifo_inst/Equal.wbin [0]),
-	.I1(\fifo_inst/n20_5 ),
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
 	.I2(\fifo_inst/wptr [1]),
 	.I2(\fifo_inst/wptr [1]),
 	.F(\fifo_inst/Equal.wgraynext [0])
 	.F(\fifo_inst/Equal.wgraynext [0])
 );
 );
 defparam \fifo_inst/Equal.wgraynext_0_s0 .INIT=8'h1E;
 defparam \fifo_inst/Equal.wgraynext_0_s0 .INIT=8'h1E;
-LUT2 \fifo_inst/n217_s1  (
+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]),
 	.I0(\fifo_inst/reset_w [1]),
 	.I1(\fifo_inst/wfull_val_7 ),
 	.I1(\fifo_inst/wfull_val_7 ),
-	.F(\fifo_inst/n217_4 )
+	.F(\fifo_inst/n218_4 )
 );
 );
-defparam \fifo_inst/n217_s1 .INIT=4'h4;
+defparam \fifo_inst/n218_s1 .INIT=4'h4;
 LUT4 \fifo_inst/rempty_val_s3  (
 LUT4 \fifo_inst/rempty_val_s3  (
-	.I0(\fifo_inst/Equal.rq2_wptr [1]),
-	.I1(\fifo_inst/rempty_val_8 ),
-	.I2(\fifo_inst/Equal.rq2_wptr [0]),
-	.I3(\fifo_inst/rbin_num_next [0]),
+	.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 )
 	.F(\fifo_inst/rempty_val )
 );
 );
-defparam \fifo_inst/rempty_val_s3 .INIT=16'h4221;
+defparam \fifo_inst/rempty_val_s3 .INIT=16'h9009;
 LUT4 \fifo_inst/wfull_val_s3  (
 LUT4 \fifo_inst/wfull_val_s3  (
 	.I0(\fifo_inst/wptr [0]),
 	.I0(\fifo_inst/wptr [0]),
 	.I1(\fifo_inst/wptr [1]),
 	.I1(\fifo_inst/wptr [1]),
@@ -133,8 +131,8 @@ LUT3 \fifo_inst/wfull_val1_s9  (
 );
 );
 defparam \fifo_inst/wfull_val1_s9 .INIT=8'hAC;
 defparam \fifo_inst/wfull_val1_s9 .INIT=8'hAC;
 LUT3 \fifo_inst/wfull_val1_s10  (
 LUT3 \fifo_inst/wfull_val1_s10  (
-	.I0(\fifo_inst/wfull_val_7 ),
-	.I1(\fifo_inst/wfull_val1_0 ),
+	.I0(\fifo_inst/wfull_val1_0 ),
+	.I1(\fifo_inst/wfull_val_7 ),
 	.I2(\fifo_inst/reset_w [1]),
 	.I2(\fifo_inst/reset_w [1]),
 	.F(\fifo_inst/wfull_val1_0 )
 	.F(\fifo_inst/wfull_val1_0 )
 );
 );
@@ -147,47 +145,48 @@ LUT3 \fifo_inst/Full_d_s  (
 );
 );
 defparam \fifo_inst/Full_d_s .INIT=8'hAC;
 defparam \fifo_inst/Full_d_s .INIT=8'hAC;
 LUT3 \fifo_inst/Full_s8  (
 LUT3 \fifo_inst/Full_s8  (
-	.I0(\fifo_inst/wfull_val_7 ),
-	.I1(\fifo_inst/Full_1 ),
+	.I0(\fifo_inst/Full_1 ),
+	.I1(\fifo_inst/wfull_val_7 ),
 	.I2(\fifo_inst/reset_w [1]),
 	.I2(\fifo_inst/reset_w [1]),
 	.F(\fifo_inst/Full_1 )
 	.F(\fifo_inst/Full_1 )
 );
 );
 defparam \fifo_inst/Full_s8 .INIT=8'h0E;
 defparam \fifo_inst/Full_s8 .INIT=8'h0E;
-LUT3 \fifo_inst/rbin_num_next_0_s5  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.F(\fifo_inst/rbin_num_next [0])
-);
-defparam \fifo_inst/rbin_num_next_0_s5 .INIT=8'hB4;
-LUT3 \fifo_inst/rbin_num_next_1_s2  (
-	.I0(\fifo_inst/rbin_num_next [0]),
-	.I1(\fifo_inst/rbin_num [0]),
-	.I2(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/rbin_num_next [1])
-);
-defparam \fifo_inst/rbin_num_next_1_s2 .INIT=8'hB4;
 LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
 LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
-	.I0(\fifo_inst/Equal.wbin [0]),
-	.I1(\fifo_inst/n20_5 ),
-	.F(\fifo_inst/Equal.wbinnext_0_7 )
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.F(\fifo_inst/Equal.wbinnext_0_8 )
 );
 );
 defparam \fifo_inst/Equal.wbinnext_0_s3 .INIT=4'h6;
 defparam \fifo_inst/Equal.wbinnext_0_s3 .INIT=4'h6;
 LUT3 \fifo_inst/Equal.wbinnext_1_s2  (
 LUT3 \fifo_inst/Equal.wbinnext_1_s2  (
-	.I0(\fifo_inst/Equal.wbin [0]),
-	.I1(\fifo_inst/n20_5 ),
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
 	.I2(\fifo_inst/wptr [1]),
 	.I2(\fifo_inst/wptr [1]),
 	.F(\fifo_inst/Equal.wbinnext [1])
 	.F(\fifo_inst/Equal.wbinnext [1])
 );
 );
 defparam \fifo_inst/Equal.wbinnext_1_s2 .INIT=8'h78;
 defparam \fifo_inst/Equal.wbinnext_1_s2 .INIT=8'h78;
-LUT4 \fifo_inst/rempty_val_s4  (
-	.I0(\fifo_inst/Equal.rq2_wptr [0]),
-	.I1(\fifo_inst/Equal.rq2_wptr [1]),
-	.I2(\fifo_inst/rbin_num [1]),
-	.I3(\fifo_inst/rbin_num [0]),
-	.F(\fifo_inst/rempty_val_8 )
+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_10 )
+);
+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/rempty_val_s4 .INIT=16'h871E;
+defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h0BF4;
 DFFP \fifo_inst/reset_r_0_s0  (
 DFFP \fifo_inst/reset_r_0_s0  (
 	.D(GND),
 	.D(GND),
 	.CLK(\fifo_inst/n4_6 ),
 	.CLK(\fifo_inst/n4_6 ),
@@ -217,40 +216,12 @@ DFFC \fifo_inst/rbin_num_1_s0  (
 );
 );
 defparam \fifo_inst/rbin_num_1_s0 .INIT=1'b0;
 defparam \fifo_inst/rbin_num_1_s0 .INIT=1'b0;
 DFFC \fifo_inst/rbin_num_0_s0  (
 DFFC \fifo_inst/rbin_num_0_s0  (
-	.D(\fifo_inst/rbin_num_next [0]),
+	.D(\fifo_inst/rbin_num_next_0_10 ),
 	.CLK(RdClk),
 	.CLK(RdClk),
 	.CLEAR(\fifo_inst/reset_r [1]),
 	.CLEAR(\fifo_inst/reset_r [1]),
 	.Q(\fifo_inst/rbin_num [0])
 	.Q(\fifo_inst/rbin_num [0])
 );
 );
 defparam \fifo_inst/rbin_num_0_s0 .INIT=1'b0;
 defparam \fifo_inst/rbin_num_0_s0 .INIT=1'b0;
-DFFC \fifo_inst/Equal.rq1_wptr_1_s0  (
-	.D(\fifo_inst/wptr [1]),
-	.CLK(RdClk),
-	.CLEAR(\fifo_inst/reset_r [1]),
-	.Q(\fifo_inst/Equal.rq1_wptr [1])
-);
-defparam \fifo_inst/Equal.rq1_wptr_1_s0 .INIT=1'b0;
-DFFC \fifo_inst/Equal.rq1_wptr_0_s0  (
-	.D(\fifo_inst/wptr [0]),
-	.CLK(RdClk),
-	.CLEAR(\fifo_inst/reset_r [1]),
-	.Q(\fifo_inst/Equal.rq1_wptr [0])
-);
-defparam \fifo_inst/Equal.rq1_wptr_0_s0 .INIT=1'b0;
-DFFC \fifo_inst/Equal.rq2_wptr_1_s0  (
-	.D(\fifo_inst/Equal.rq1_wptr [1]),
-	.CLK(RdClk),
-	.CLEAR(\fifo_inst/reset_r [1]),
-	.Q(\fifo_inst/Equal.rq2_wptr [1])
-);
-defparam \fifo_inst/Equal.rq2_wptr_1_s0 .INIT=1'b0;
-DFFC \fifo_inst/Equal.rq2_wptr_0_s0  (
-	.D(\fifo_inst/Equal.rq1_wptr [0]),
-	.CLK(RdClk),
-	.CLEAR(\fifo_inst/reset_r [1]),
-	.Q(\fifo_inst/Equal.rq2_wptr [0])
-);
-defparam \fifo_inst/Equal.rq2_wptr_0_s0 .INIT=1'b0;
 DFFC \fifo_inst/rptr_0_s0  (
 DFFC \fifo_inst/rptr_0_s0  (
 	.D(\fifo_inst/Equal.rgraynext [0]),
 	.D(\fifo_inst/Equal.rgraynext [0]),
 	.CLK(RdClk),
 	.CLK(RdClk),
@@ -273,16 +244,23 @@ DFFC \fifo_inst/wptr_0_s0  (
 );
 );
 defparam \fifo_inst/wptr_0_s0 .INIT=1'b0;
 defparam \fifo_inst/wptr_0_s0 .INIT=1'b0;
 DFFC \fifo_inst/Equal.wbin_0_s0  (
 DFFC \fifo_inst/Equal.wbin_0_s0  (
-	.D(\fifo_inst/Equal.wbinnext_0_7 ),
+	.D(\fifo_inst/Equal.wbinnext_0_8 ),
 	.CLK(WrClk),
 	.CLK(WrClk),
 	.CLEAR(\fifo_inst/reset_w [1]),
 	.CLEAR(\fifo_inst/reset_w [1]),
 	.Q(\fifo_inst/Equal.wbin [0])
 	.Q(\fifo_inst/Equal.wbin [0])
 );
 );
 defparam \fifo_inst/Equal.wbin_0_s0 .INIT=1'b0;
 defparam \fifo_inst/Equal.wbin_0_s0 .INIT=1'b0;
-DFFP \fifo_inst/Empty_s0  (
+DFFP \fifo_inst/rempty_val1_s0  (
 	.D(\fifo_inst/rempty_val ),
 	.D(\fifo_inst/rempty_val ),
 	.CLK(RdClk),
 	.CLK(RdClk),
-	.PRESET(\fifo_inst/reset_r [1]),
+	.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)
 	.Q(Empty)
 );
 );
 defparam \fifo_inst/Empty_s0 .INIT=1'b1;
 defparam \fifo_inst/Empty_s0 .INIT=1'b1;
@@ -303,7 +281,7 @@ defparam \fifo_inst/wfull_val1_s0 .INIT=1'b0;
 DFFP \fifo_inst/wfull_val1_s1  (
 DFFP \fifo_inst/wfull_val1_s1  (
 	.D(\fifo_inst/wfull_val_7 ),
 	.D(\fifo_inst/wfull_val_7 ),
 	.CLK(WrClk),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n217_4 ),
+	.PRESET(\fifo_inst/n218_4 ),
 	.Q(\fifo_inst/wfull_val1_3 )
 	.Q(\fifo_inst/wfull_val1_3 )
 );
 );
 defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
 defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
@@ -317,7 +295,7 @@ defparam \fifo_inst/Full_s0 .INIT=1'b0;
 DFFP \fifo_inst/Full_s1  (
 DFFP \fifo_inst/Full_s1  (
 	.D(\fifo_inst/wfull_val1 ),
 	.D(\fifo_inst/wfull_val1 ),
 	.CLK(WrClk),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n217_4 ),
+	.PRESET(\fifo_inst/n218_4 ),
 	.Q(\fifo_inst/Full_2 )
 	.Q(\fifo_inst/Full_2 )
 );
 );
 defparam \fifo_inst/Full_s1 .INIT=1'b1;
 defparam \fifo_inst/Full_s1 .INIT=1'b1;
@@ -326,14 +304,14 @@ SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
 	.CEA(\fifo_inst/n20_5 ),
 	.CEA(\fifo_inst/n20_5 ),
 	.RESETA(GND),
 	.RESETA(GND),
 	.CLKB(RdClk),
 	.CLKB(RdClk),
-	.CEB(\fifo_inst/n26_4 ),
+	.CEB(\fifo_inst/n24_3 ),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.OCE(GND),
 	.OCE(GND),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELB({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]}),
 	.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}),
 	.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_next [0], GND, GND, GND, GND}),
+	.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]})
 	.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 .READ_MODE=1'b0;

+ 13 - 13
src/src/WrapFifoChain/Fifo16x3/Fifo16x3_tmp.v

@@ -1,24 +1,24 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Template file for instantiation
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.02
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
-//Device: GW1N-
-//Created Time: Thu Apr 25 16:04:59 2024
+//Device: GW1N-9
+//Created Time: Thu Jun 26 11:09:42 2025
 
 
 //Change the instance name and port connections to the signal names
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 //--------Copy here to design--------
 
 
 	Fifo16x3 your_instance_name(
 	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
+		.Data(Data), //input [15:0] Data
+		.Reset(Reset), //input Reset
+		.WrClk(WrClk), //input WrClk
+		.RdClk(RdClk), //input RdClk
+		.WrEn(WrEn), //input WrEn
+		.RdEn(RdEn), //input RdEn
+		.Q(Q), //output [15:0] Q
+		.Empty(Empty), //output Empty
+		.Full(Full) //output Full
 	);
 	);
 
 
 //--------Copy end-------------------
 //--------Copy end-------------------

+ 6 - 4
src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/FIFOHS.prj

@@ -4,17 +4,19 @@
     <Version>beta</Version>
     <Version>beta</Version>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <FileList>
     <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"/>
+        <File path="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
     </FileList>
     </FileList>
     <OptionList>
     <OptionList>
         <Option type="disable_insert_pad" value="1"/>
         <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="include_path" value="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data"/>
+        <Option type="include_path" value="C:/Gowin/Projects/SB_TMSG44V1_FPGA/src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS"/>
         <Option type="output_file" value="Fifo16x3.vg"/>
         <Option type="output_file" value="Fifo16x3.vg"/>
         <Option type="output_template" value="Fifo16x3_tmp.v"/>
         <Option type="output_template" value="Fifo16x3_tmp.v"/>
         <Option type="ram_balance" value="1"/>
         <Option type="ram_balance" value="1"/>
         <Option type="ram_rw_check" value="1"/>
         <Option type="ram_rw_check" value="1"/>
+        <Option type="vcc" value="1.2"/>
+        <Option type="vccx" value="3.3"/>
         <Option type="verilog_language" value="sysv-2017"/>
         <Option type="verilog_language" value="sysv-2017"/>
     </OptionList>
     </OptionList>
 </Project>
 </Project>

+ 32 - 23
src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3.log

@@ -1,19 +1,28 @@
 GowinSynthesis start
 GowinSynthesis start
 Running parser ...
 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)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol 'Reset', assumed default net type 'wire'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol 'RPReset', assumed default net type 'wire'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'Fifo16x3'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 NOTE  (EX0101) : Current top module is "Fifo16x3"
 NOTE  (EX0101) : Current top module is "Fifo16x3"
 [5%] Running netlist conversion ...
 [5%] Running netlist conversion ...
 Running device independent optimization ...
 Running device independent optimization ...
@@ -29,17 +38,17 @@ Running technical mapping ...
 [60%] Tech-Mapping Phase 0 completed
 [60%] Tech-Mapping Phase 0 completed
 [65%] Tech-Mapping Phase 1 completed
 [65%] Tech-Mapping Phase 1 completed
 [75%] Tech-Mapping Phase 2 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  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 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  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 [80%] Tech-Mapping Phase 3 completed
 [80%] Tech-Mapping Phase 3 completed
 [90%] Tech-Mapping Phase 4 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
+[95%] Generate netlist file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\Fifo16x3\temp\FIFOHS\Fifo16x3.vg" completed
+Generate template file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\Fifo16x3\temp\FIFOHS\Fifo16x3_tmp.v" completed
+[100%] Generate report file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\Fifo16x3\temp\FIFOHS\Fifo16x3_syn.rpt.html" completed
 GowinSynthesis finish
 GowinSynthesis finish

+ 112 - 122
src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3.vg

@@ -1,11 +1,11 @@
 //
 //
 //Written by GowinSynthesis
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.02"
-//Thu Apr 25 16:04:59 2024
+//Tool Version "V1.9.11.02 (64-bit)"
+//Thu Jun 26 11:09:42 2025
 
 
 //Source file index table:
 //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"
+//file0 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect begin_protected
 `pragma protect version="2.3"
 `pragma protect version="2.3"
@@ -17,129 +17,119 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `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_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
 `pragma protect key_block
-W3HrOAkNrb9fyqeg7xkmFYNJEXf+2L4xAs1NganKSsLdhqtqnzGilurt3rhiuavKOthhpj0CIxX1
-ZedEQJHy1YoMcnQT/3ZR2V3s3tn5tIa0uYYmQ8HT3UmPy8pHZ9XT/zgb2OmdgjJxDOHxDE7oxPBw
-9cYYeTV+3m3U6h+r4eV1SJQSYMc4UjdcIpk/DWgts59MtW68EHUmHQxC7WbB6lq0/1Vwga5FznK/
-+9xK15Qi3TKg78a8SyeARfBIq/ZyaIeoIf0QdOas+rARU4dzyqiiiy7sm42o4pyAR9PegR9hQGE7
-t/bYNDjO0d+SB5/il7zBD/3fBQDGuJm2Z5KM7Q==
+QR+ckbaNhwhyNg1U6WQO8hAldjyP1LUGylMi4frppjDlHJUE0X3d+p3Tk5B3/H8+5b3TT5ll9yWS
+hQEMHDHgXWhmhvSVtOcgYeyVDQ4uxPqhDC/KDMvdUCnROdm8xXb9tnuG98pfoykrhIs+YRaHDUM2
+VO0C9RFXkwxOYbK0i0mn9VlrKifYegxh3n48y0fBaeUHX6BWFKIwN7QK32QY4nZhjeghtHBrSW5y
+xfPOqpFlWxLyxBDYtZvmp9kGjqYNnLbTCVIAjEXCavEjTN8T0AQv2RCFVs5zwCxNhluaiBf8kT3b
+nrwY8z/Nec9IUKlRrVQ6JMH6jCXJWlZETP2N5w==
 
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=6368)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=5808)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
 `pragma protect data_block
-dmq3QISPnsxdyNyWu8EAO4m69VLnpB26vGEUYUMn92HLthNr1ut9o11vIaLFwuIStdskrwisMjDE
-c0tiko88J5wNaFCbAJBV85C7lm36Q4yLcYmiPF2ZQdpVZ0oin/1y4BNVfbYw8O2ebk3zy11jw2Bv
-MW0IVlYcvkY0lgqXIPPCTNb0qx03Y55ae5xkdTylf7Tjsp8wSBfSU8P91z8K1/hcycF/4dLqrRGO
-hCCUD6sDJGpD9geNKQqRahJUez6NXNdAT9Pq+/GqqyQSqAoRzGbrsPqkMwMnXJtePf96uw7otooS
-mDfTJSsshV+5SC3Z1r04HvSXrG2VIg63+UNwmlU3fO5MqkGStpxy1rFDB01EMfDmUYiyQWBKF+CI
-uFesqlNZeaJyuFfvvJO9+eoyBZDT1Gxg6frC1JZ7chkXz/Mn9mt9A0uSy54E/e0C+H0WPwZQ8MmA
-Iz+p1TTbcvkjCr7vDerBdrnh0YPvriJQJpMyKDyeS9cI6hpKmzAHoR4Xeqyh71wIBZQSxO/5/sKB
-zqY8rHiInf40eiYRb9sF82SC8u0OwlzlYiTGTb4VQgKE3SvSQd9sGx9UoCMxjD8eZJjY0aSdotno
-NDeLsZpS2JU0nCUTa8fFZ7LPPXAscm6mKeL2newvwbwPEnZI6TMZnerO0wtmZZfidgdxeiWuAbM6
-FNbtfyvopKzsgPfjs50HDfAIwVGZQ/PVa8sMY8DCBdJzE1GjkUDepRwuHLcOqlJoaYeTVqwvxoMx
-mMWye/qFcxivpVckW5F4a8b+mVUkB7mWDBTNBYMQbDXGQQA7sD5j7h5h9HNTmN2eJGncAoo28lQK
-bbf58/kZcU6ucqjTMJIoaLm/CZZ5v0zM2V17IwE7kXoQiAOKi/lvl+vrbmfh2IZO1AmpQvtUI+Vq
-VHKLlU87o9SoX5iQJAkUYcl8MPRQTSYIJ8FQp7Lo5MbvQCXif0Rc2KC5LwThxY79ZgTLHFaTCT1t
-CFVmZH+vIMahWFCkeEHUPmZydgauaHfyvI1UlQVj1CmS2QvGZanAxw7AoSDiiHDRB/lf00r5ZmNg
-0H7pESBjs/o5IMC+xYM8z5CBs7Qt8SofwkjM9HGmE9TP7PTucN+9xgB9kCzYEmXWhgaksZBXXtY4
-eTVnjnA5zsMwOfT5HhWY+ER0wjb0w1r/5PsRbdZlBJd0WlrKt57M0xGCuiRImYB1bVgYSqpEw1pS
-vSaq4+iVY7l0J4UR90WF7jJx/wOTor/8iKiyPBW+ZnKKI9vQGgg24nqHCX/PDS3eXfty3kfkwbaP
-b6LB7mTLU9tg1lbegsuy9SxgA5uP7Uththzx03Yg0FMWklXIzDWROyTpE3d1C6ohSqg4I15JMsY8
-Kj2YbuQJj/CBO0UjYg8l5Gklc4cJHgFkPgHMW/FknEZkP+83xNUssux2JLB2FiKukugoVpOpCdHj
-ljrW4+53henq9Q28ri03td4lMbNt69/wuW9SsbeTDgqYaGCk31mVkf3zyVyGLCrrBKO29kmmo7lj
-fd8bfXkXV/+BP2lGM8wrtg/OkSTBFgXAX/9JJTgk5cpuePOLRFhISlBwcIN3YkSS5FObxy7+4i4+
-DVi1zqkG7TzX4+daCVTLsovBBE03VmTvn3uLfSOVhd/F35+1Dxm3EHd0kNr2RewU+uT91hGWnxn8
-ZZu+eEYjLhHxgaz7xv1VI0XJFVSXBoCwHqDMERqiwCwHjJQmhbXFe2ghoYaMGoNgjFvLs1CUY0Oe
-rikc4Z8ZMhslu1iaskrELaZwbV5Mu9Os7VJy/ZsqacaKbGyxThV8kNUv7rkJERSJte1JWFmGYcsj
-5Pl4FSzRdC8st74G/uF0ZzGh4AHs9CUF8bA/QmtZMM6eG5/Xl3rLAMR4P3PCFaJHf/N9S/LUgO1B
-g9zalAcH2LNGv8Xxy1X9YRs788mxyyOBV+oANbf1iI6PQ/OZ23S7sKFfII6bkQCaN3fkysxX4/YD
-Ltl0o2N3GXLiJH1oKTd8u4BcY/o1H0kvaoKWzTiBY8aiqhNZsduBeE/y1cJ91Aht0Fjj+CXzd68X
-RRqB8doIF6LQ/+sHtDl4c0WXJSuYRgoBWySQPwWd/JDr+UgTgTpWW6emH4c3FQecMJgYvzHs4bA5
-sDsavyht4+7xGpEFfjFk26LBKg5pmU+ybxCBNh8Rwa88kuvwC3S0S+OPyEgO0GO8FD00m0lXrP+Q
-+EzzWajsn5VuEKL5NuF+JzfYy/WCCYcb2N9Qfox+yCIvkHxthPDWmBZ/rf/AEQ1+7zScbEW7Lu7C
-l+lqQRFETyLLVmpdKoUEjTP0HV3mlM3t6g9/6cKgoB61unnittRdtunLp4nQFBtdpXOmdS4Chxwr
-Wx4/aLlMaQqOWk3PPau+IWtARwAzGjng/NFwJJ5mftH90ZEaFkRncrkhmuudko6t9JK/IAub1Zq1
-l5zSyOWLwIYExUZtJYvHqALaRnSXuVQ80eyyu/dbqJe0wixoqCZb06E2kwZp1rl+Vw8GFjh0+UAC
-vEZRl+JlQQ07DP4LgqXuvhp9wyindBMQ5WLOPxeMShPGR8o6kRr120A9pynLlpZ5AE0+MZCkSjL8
-7VOCX8E2rgfdOAVJ6zJaxj7XT+AKR5CW8AEbPtW7OmO2dLXwmMusY/Jf8nLD8FK0QF/FLmnmBp3W
-hp+OqrDMBtDaVbiDN8ovVO1BqI5PY2IrI/E8GcwPkDQ+JC3tvJNxlOs6H9L8kVDehNRGihdvzNfJ
-/YYTcszMcZViqRXl8jNiSbWOEO6vspf2xVoQsaElimgXyDDurM1hXx1x26a2PrbnDXjqMhoNm4iK
-YyYxgGKK6v+dCPWWLDiWjV3ax2BN5j0tm4HgTcTTvE9UuU53z+kbSCzkqwVY+IRNg1dCwnnPPoWC
-KbQujUoswNJFn52mlZguBMC3TMcv6WKuGhHb1WlcMr7kML2qmF45ls47fVKqO5BpzlAf5w0f45Mf
-TkYCENkr7FVUbxsI2o/FDxTkP37fy5kNkurTlBfljrFGpK9n10O8W+F3PT+yPQKflUYo+ZGZak08
-8yGKfol9jJFJ2qMspOh2stvH9PrdzY4xcsmRCC+Nx+clh13oY7svzWU2L3R+8hN5m1umDiFCKyC1
-NHiezwowCkJ2O0mCtZ4tarWY8qaNe33IcKk6LohglbgnLeegVga63rS++7aSneTfitb0HHytHbDj
-yNaWKsAl8PgWHWlf4REWUSI4vEuGuzksq6VPc8udPK6hUVV3t7eP62TKyps6muQFJf4sNpyI9cjR
-y4rm5HucCdcOqr0E8wEyK2BX1YUeq58v69WcUsCpMkQBrdeoyDs80qxYCcHUG2CUwjO2CVlFYT3B
-l99c/DlLTHVwMDT1HLHSoN1vHZlr6H8TzMsPU01jcIosh49/kaU9Q8j/LWUibT+exsTnLDMduQCo
-2ebveawUa7zdzIGSHgNRK9Hyl5q4METvYhFEhf7JtybG+0V19645wDjCssGG5mfsGYMxm8qKqiOL
-isfYBFB4UqrnbGzhToUHf0eUZC6BIJ/08hM7B6kU7FeRSg9rffZbreTiJFPnHJUz9uXj38yNf8sS
-mR/1nsUdPOggyH8t2+h0Vz6X6Aa9qMOX+6KOtaM0K7Ud05d2pPknbE6NAPokRCX1oTtVjfweR2fF
-JihT5fAF44GkwqIewwrd10ddzIahxl/hpBvJ6AjG48Nqgw9R1CVn0JgGxeEsSVP0iMj5KejHS5bs
-9o3AlO7tYD10hnoPo7FNNkf9GCFACEh7L19xcrrZFTMvBQxn8MvljvgPEQHRim7ZiutPNrvMnJZx
-un78dDnmaw7mBnd88oaxIcuuKpFmiEXOIp9WBKOZfF7A1DAfVbyStkcHx6Pc2KIzF9spwlib39jl
-mSdRN6fdHip+QhGTrgz2CSZ1nTfYjuTm8IxC1N773DOR4JKYo3zG88o1I5SOCLOcpvN+JhlXYhY/
-hrEAT1hzQkMA5kFH115IKlKW5Mucaq6gW76RJcz45DLa1YYx8wj26BEi/n1Ypnp3Ren7AXnx1Fqa
-e/vMS5prYZn55PXtEua4riXTgWOmGLPjaEa+iMJU+p5BlfDEjVHKeDHaHJuqjV5GYUM2s9mSGNH5
-LYL5mOSHC+xbFxMFoqxNZOGBzuZYp0qZ/mOsc0dRFoL7lk7jctrOkuG4lawEiUW8qGDTq3XM+aAi
-J1MofuXqYn/hHfxyT976G6YT+B4XOhyRmFgjbISztzVxpOFBH6dzhFj0O3ZiGjp3yQNnL3GIwNSb
-i/P2PX2xwmyNg+qFCIed9OsNUJiheIpOKoADYaJNZ2Yk7EjDyubfFCXbC0VoRmCjOM6dA3cuQRZr
-4r4ambrod7o+DDW3m0qaKN25Mp0z0zyJPTK5Lf75YUH3nUM+/wUqdRadqZQQCQhKKoO7rckXjVw0
-b3fEX3UKJ03QmmFgaUO5P3iURTFoUIXSv63iCHAcqYruPprgTfug1L6yLNY9EQMnk32/GX7LyGg/
-/NZBalXwq9tSWWf4LhpxqT0pZeeQHFS9IE4IDY6VQebqIRs71WUQbjyixeoOTGrSzE9KubkskIF3
-UYO2BpDqIxtCeMtSHzumxbdOdGj9KnmlI9KcttoF+nT/smOCq4k4mtMM6NLMtvj2D5rT/Ba4xRfW
-RDxqjWCGL+GGU3E3E2BuiOouEPgGsj97Wm/+vJ3bUql/4y05f/l+KZCQjK2ft0JcsH/F7PG5vReS
-eC80SECFPFHKcPY3ywtiPXGJEHaeWX7qpeW2bNnO8tksEgtwNRfjAthdOf2ndh2Xxn1Nc2Yjhn/a
-5zPZX1Z+B7HAPwtRs2PBdItQTC+1236v3GAiawsTRTMh1hjr8ioSpeP1eIBs4w907FPguTI15xHC
-D7X7AkVkeAS7IDErNrzj7NiSsYByaAyoyvl0vh2COY5+PWG9D2/ufMq3aZjF7hYc+528nVmfzcAO
-4wXHzSqBxXsIWhnzEY7Irs5CdE8EK4QcNxu9LiGoIM87FbX3toOVF6HIUYJ4uDx61DlXGbdzY/5T
-clCrpJamh1XSIXMq/Dnt2vfBlw92kE9xJ4PPMhLd6UY3aM4MFjpFtUFnZV5Cq2YbHnW8ge0lijlN
-gFhJNjTwxPlxLNQUCs8O3YXat6J/5b6IZdm7d5tvcem/2CgZoSR40YRQsOb+TUYZXnb1gN44qimz
-Uw8Nme5YEqFel/jJOTAt9jnHFxpj4MUKwT5CGPx6wLcsbZ5Oj8zdcT04bUy7w5Dqnvdo9y5/PAT5
-HzcwpxL+WFO4emdVnzkJSrVfufea1jqVn6dh8KTNXCK7k4pFb+NR4RUbqmcvbgLqQd0gkKYd6FXJ
-fBHFoAGmNbzYNB9PWR1eFfrXOi8TQx4EOdSgQMr4auUwhPpOVZt75D4WcWyYCK0P8kDX2uLDFxl6
-YSL56DNftuBvLthruu2xaBJkiiYpcYGVHCjmVjkWXd+9m4kCIvjg10201Hc4xvQNyu8oePRdn/Y9
-61VXmxSNDQgBrHhXrRE335iwRiWmS7NffgQcxpbyKeF6+YP82qT0D7b7iFrZdBslT7bNwIztpEnu
-18FJviMkLRwhJxDS44ULijAYBDbOaTcQLZjFrERVeH+6d/G8GlBRQMpSIWbtr85JpaWfm4qugOSO
-SPyN72cXOGwsmXbAcXe0M3mgRQ23xJVjr8yi90TZOOQY/ezOVJfcUKv0TjT+ZJpAhxE81M4zKXR5
-F+/FRXptyZp4irfGKqKjy0kSbW1fgLmteuP41PEgqoumV0U8JcL09NxgA3vEr4kMThmwoA8kaIVn
-VCmbeFdJed6/Di8vhxa549JxByp/mka3XY1Be5PBj5kNlbymYvxa7Td5iQTJdn0RlyL5Lv9DVTYt
-B3HQpq+VAR/02u/ODD82IDhoDV3dNVk1VNqEMcUD0aWP0Z95MoUVitxWzdkp/FrrzL35KkmzQXs4
-hJtDxiW+HQH9jC/YkyivD5bZ9uwJ+a1MFAj1nwSfWMzoR8OPcuuKFHMA0Ab7wX2jabeV9jmPqx0E
-mVuFjpsDXZ+H7e1gP+6mjENTSLWOvgkUZQvUSjtNl/BW32MqkKvLEwBpUDosAwA68Ua5fU/eBozs
-bZ8rJ4zOBCPC4XEeBxdw3rTCpSO+rvjiw3kxpSpTQLDZmH2Fa5lvADdKHYbZfnZtyT3iIg/XoTuQ
-ulu0inUkpTLdcaWXHzljDIUuu48uFv4/+SQ7feFQB6/LCdAqKPkLgmrmyHVKRVjLK7T9Uh00yI1Y
-wr6t+YG+qH1o7GH9YWQW7L9ZLcACucnULZOaez7fI51mQ8JWmQUsSI2vsoQvhF9Xm0XuFLtrb3yk
-9QPEB+8MVu0QBYb7Bf0IoS18Hk/7cGh298veloZdOL35n+Wr8q3Y2EmprYskXARk5Op5Yy2MOY4s
-4KdGoHyYxsQijjyv9ZjX2/q9VcLnRQ0lCY23IXRCVCUZG8LDJqMLXgGi94rAol09AAZbG3s05BW5
-lRqiKRVI/EziqjLzhuDbdoJTBVzp8HRJRkha34fqfyk3iVnQG9lUTvFQhor7V/PYBd2B+QyvOnWz
-6AIDis9KYhRkgqj+J1upUTH22m2u7QGtaHcEtL2LbUZWpnj0jXTpxxezECMJ+oOzz4TliFSQOWh5
-pT4xm10QmEffXk2O2zFYJXosBW61xNEvXL8AoqJ4NsXupMaNolZgDUC/amJn0xdgz8KzwGayZAoB
-b/zBTmbm08D3my1peI0ZWM4Nn+JQDFoO05gFeJR0DnSxcvoWT9e7+b7axcOZWh8g1RgOEzNKw9A8
-CLloTrzsPPiYZbEuPrDeBizYNzvMy9I4jSzauYRkAV62Bsg27x/p2rvHHMplvdzT2r8O2p8w84z1
-x0GKgactoOPwC0jQdwjeJDl5rHt/+P+9d/wqE5G3XNeblVLh1qrCyP+OKWj4pibUokmcJPA09Vwp
-Elnff5Xhgpk0Ss3tBSK1tXFgfoGejnEhauhkvIkUCnQQHVqiwykVS37vmBehrZFn99XDNj1ZuH8P
-wjkkmNiqZHNGTAJMMY1D3thY9EPvY5haHB0ehp/rDkR6uvNR/7zzvDxmTFHbE1R/JmvVpT3X/KlH
-r0TT1B1NEQ2wffNvBuJaIfshW8U/tUtKOtPlO2of/oE1tgqqF7UdT6KykJd6B4Zo/FtoEqnL9DGD
-3F7fZomR/u7NF713DYXMYXFDK2VWJHJ/RU8imMYTLm9E059Pf2/gILmrCkoBwY64VvD7GfhT9THI
-IfrdWgbIU16dFwmaqDqpnNyfCxzlR8oPoSUdfKQE5bte2I01/07OFMCLY8i9xTcpjnrK16cr59+h
-80alOjlLMvTqqSkIZNUp1hde5K3OLl4Mi7VBsWobs7OQpIRTc/4Vh0qUD5qZq6pNk2Xi4rXAJg3i
-cO+UoLXMjq2FACbSbyYxOr2udJOIUwS++EVIP0R2AlJj1Jgl0zJZC58cdzZFi16jAiZgadifrvfo
-mY1ROWIZA8wwWisW/wyWHUQ/v9TM+kBA+wqJa5snqQxX5E/FT3ZmnF/4EWQTApPMaAkgvi+w5O2m
-9clP8cAU26IkiRLHv8WZTSKoZpHLdNxs5lfBee63oPLmCraDNIVGZpLIbbDW+ZP83vC2d7duLMqE
-TgCTa3c4eYZfvJOQa2wuxrkaJgHi0TxtUheRpdBkm5I/9Kqyq4gqkYGoj/NXKbYvE6UkZOdbWDCa
-E5wE38eRJqVC6+42LPOECUVmVK74G+D42YNsAkUui8PFbrcj2cyoYZlA2zZGvg+4I2ddPFNsQcjI
-PX4gJHiPVC3ZdrHHZfjKC8nocCZnC9mZtZYTB0fLXYON/NEd4++kUxk0rmShOll9u0BN7WwJp6Wq
-GcjqsPllQfVIznTVokNuOsN6iXuv7TM9ARax9PpJdmiKVzmAJ/hs5WJ22Nm1TSiCrJaBvl5f9Eib
-nSOcqUtv5Udez12a/WzJj4+HHBOQTJkRso4ere68u0fE3urtz1DoFNAJcBNhwgoE1doqSwKxoWou
-zrXIzX6+F9BQGk7KXbZyNCi4Qynwl5ebwOfJI2QforjgSW5oQwLzwJn9g9ySam1l7vEbua/+h6AK
-fyGfIdDeOqnDYDOthCgWLCErIdFbCztjcLngLh3R/GAKBo5dTllTU73aERDqBQ7qehV1zxfd6dNk
-nWBdLQllT9n5Q6L4yZ6hOwil+nUaBAC9hC5jp/MTe2poj9+ucsuAiWrsc8HP3C1bRLFBQv0yizN7
-okgMLeCoASP58XNBflM7xXSH/qPkFwZItNSk9EqrafvUDhWl3i+DDImonCUewYaYqphdbtuUuw2k
-Hv3lWSLj11UlDs9BaDGW9cH1kmlCWTfkvyDuxAY7QT6MjhDxn9+njLaLYB02UazeRSPeHuXmgk+a
-44nAzVolkBpHDJqQCImCMKar/xKAFRtTRYUllEV/XXmbaLtW2k3qWtGotGRTqLgZtv7J+lfpHjya
-IsmCBviST/NaLrbecssUM4rq97mLxpIwmAMLvgPpLBryi3SVk7UkqtY=
+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
 `pragma protect end_protected
 `pragma protect end_protected
 module Fifo16x3 (
 module Fifo16x3 (
   Data,
   Data,

Dosya farkı çok büyük olduğundan ihmal edildi
+ 46 - 43
src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3_syn.rpt.html


+ 2 - 2
src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3_syn_resource.html

@@ -30,8 +30,8 @@ table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-co
 <th class="label">ROM16 NUMBER</th>
 <th class="label">ROM16 NUMBER</th>
 </tr>
 </tr>
 <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">19</td>
+<td class="label">Fifo16x3 (C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v)</td>
+<td align = "center">16</td>
 <td align = "center">-</td>
 <td align = "center">-</td>
 <td align = "center">18</td>
 <td align = "center">18</td>
 <td align = "center">-</td>
 <td align = "center">-</td>

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

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

+ 13 - 13
src/src/WrapFifoChain/Fifo16x3/temp/FIFOHS/Fifo16x3_tmp.v

@@ -1,24 +1,24 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Template file for instantiation
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.02
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
-//Device: GW1N-
-//Created Time: Thu Apr 25 16:04:59 2024
+//Device: GW1N-9
+//Created Time: Thu Jun 26 11:09:42 2025
 
 
 //Change the instance name and port connections to the signal names
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 //--------Copy here to design--------
 
 
 	Fifo16x3 your_instance_name(
 	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
+		.Data(Data), //input [15:0] Data
+		.Reset(Reset), //input Reset
+		.WrClk(WrClk), //input WrClk
+		.RdClk(RdClk), //input RdClk
+		.WrEn(WrEn), //input WrEn
+		.RdEn(RdEn), //input RdEn
+		.Q(Q), //output [15:0] Q
+		.Empty(Empty), //output Empty
+		.Full(Full) //output Full
 	);
 	);
 
 
 //--------Copy end-------------------
 //--------Copy end-------------------

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

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

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

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

+ 139 - 149
src/src/WrapFifoChain/FifoDDS/FifoDDS.v

@@ -1,11 +1,11 @@
 //
 //
 //Written by GowinSynthesis
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.03 (64-bit)"
-//Tue May 28 15:49:41 2024
+//Tool Version "V1.9.11.02 (64-bit)"
+//Thu Jun 26 11:09:20 2025
 
 
 //Source file index table:
 //Source file index table:
-//file0 "\C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
-//file1 "\C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+//file0 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect begin_protected
 `pragma protect version="2.3"
 `pragma protect version="2.3"
@@ -17,156 +17,146 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `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_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
 `pragma protect key_block
-HBNA+/9oSsy54/JlKoiN4gbbgk61v4S0vzu1SlxVV1FpSHLGFM3OwH9RYuOhFT+UXDcUiyGSTSim
-K+dcHv0CeFpV/YQWR5St8DdQGG+R45m6XWDErYGEafyEor0OduRaUiVP0XYqOL50oW/9d9x2NNiT
-ln6/o/IJCxIEaVblBTKR3tD4Ofb06tQw/6ZuEVhgWtapp5r+TlGiaQP6jx3uNfn+NBjuwyUzYkQ0
-MJjDVvgoM3zUdhRo+JtyCKggxSnoc2ym6iCL/mV/5ly8CtyjxhgYzms2pS3M3jxp5ii+uQ3L2s40
-krH8Dc9bcX5adde2FYFmhmRyz3sc5c38ia3cWA==
+h2Hk2PsTwq/dtAZ9cFVv1LIjE8XyjgauxqVI0H0KYFOYx3Oczh/IQEEmZNFaGIpF5+tpslMYL+Ka
++ZHdv2OmWeemN9OQUti1xK5PjD+tkvCGzpdHcDiZwF13UtlVVZAsEeOwAXH/+xl5iVD4XG1+sLw+
+0nK6e/8txanFzml+X3aHiYsP7g37sp/fbBNzYVGbvOdk5dBM9oFfusDzrd57y56OLNqQN8Xkw7X7
+YXRy46gZSPhUEew64wB1//OkcYXy/XR1SG8GKx0WW1dETf37zkyuWnWhtogDgOzFcnQjd4KWvyx8
+sPn/fYjDgkHcdGVe++mN41kzGiD37X68lMYU8Q==
 
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=7872)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=7312)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
 `pragma protect data_block
-I3GVcqqFn8Wm/DspETdbmrzxwc2cGyBdYULDO3jFXl9q46ZHZrxfnTA9nD7u3a/6Ris/l7vU4iY6
-HEuFmPel5ekLdMay12YVyyD3AnaxgYsCLhNS6wOXRuQDTXMG5YX1xe1uIKB+NML/YkMIe1yWjKm1
-A+VR6DDE90PlvTqB8nfxMjQ0hyNejLPR83hHK/QkQOxCbD3rW5KRB67YsK9RlIcsPs3oaOndg3+d
-t/DOZ7M5qoxwVhuknQN6rsCM+4MB+y27w52JD0r446Ar7OJDJQRxHVBMA/OiLm1paf/2QGT4KrJ6
-tqjeZW9YlVkLuRmomLnxM600+xO3LapCofNNdKpBCzu7CsQqsrcbAvcsMoq2Qp+UhssXe+WSx3ui
-KBbZg2/e6pYw4ZV88bMiI0dzM/e+iMxSWQTgHbUBJvI3iequIPDOEf/hWbUe/LaloEEDYqUfnqVV
-2ZMscMF5B9GSMWDNykvJJKtA2qmlxDpvcDYQDMd8OTQ6zFsLV3E4/4C9kDXfPK4YRNofrY4Nm0b9
-+otfuO+ZAHjt28Lveyf5RXIALih2+q3jwdVuP9BpAMjBuGNgPVQUbJp+Bz24xpFG5ji2Gmchel4H
-/LGiLbGK3Xn51OFlwRIKmzzF6rDdJlySzkGpPXvccv14DGJCnyJy9XFZ7NKtMgQqC1Ilswe9mkys
-gvM7kxc7ffrjXzMZbBWDkFMBSPV3VvE7e/GLBKPE5poYgckKwEWLVq1+BZI2Xhr8V3YJHoOrGcBP
-7XzQuhR0M8qSgn8NdueoGni5lLlE+lrMsDPosFN1les8SE+dBDw48AF3Qopg5G37ceyGXxQhZUug
-0I8xHpDhXe+m0D4vXcN7zraGRhfz0UDpHeKWEfbwxM0uOFPBEZff4yxUZippCPDyV4DcYI8ql1EF
-aquIJ5lxIXnLOitDx3pKTmSagNLO8rSdrBG9XBs8Eg5f0NENJ77HLu45l2nEJUP4eGfZv4+y0yfA
-RNxrHA5jHfOAJ98YYJFp5klb5gazOzJbPW+FJ5c0BTzuiOtlzKRhWOsndnu5MeGRVHVi//+6LyBS
-yiXTC46107wpQOEb603JsTRQGo4+KBWFsfr7FUEHCX0mXxMFVYolwLXI73sBA6J2GpNCM9Z4JtSG
-/24Qn5gTS7bqEcGsDibKnfmBhls35OyfMoc/Yg8M+YyZjb2f8kB+4xcaNQ4gJ7mrBLp/pZlqU9wS
-4TMEa7bIPaozUEtXS9Uu9BVZVmFaAkouc7d9JLro8YKq+8J5/U9p6om7YJR2sFKa0FYweuhCtqAi
-53kVaCCkYtxLUKz6wdQ1b+Ulahe2gs6gcqDER8zeusRMC7jc3bGiW2vx2EsA+kfnck7frBRVmamm
-pW+MNcpEU1rN3J8cWVTo9BJA21YJkvnkGAC0EGM1WjgjEkv1mXZCqi1t1cP8EWxnzG0EMcxV7Gde
-WTDi3MrmEY9J4Dw7T4h8yQaSK4MqYxj5lX9Oxzc05N1hrJgEeEx3LSoObCyyVRqllq7r8/ozSerw
-w+UJ6GX53Le7x9zMoo6PDZyyficxzFKY4qwFPe5SsttL2FfOdCx/Oe6WQX0LNJp1FCu6T5JCGiB5
-+6+v795jtWL95xUswLNDkxcuKgsaKnYmAE0o6zPsD6tT4lh+3wE8MA2dZtlH+jATD4Of25JWicF5
-hiYxksQZ+yOK8La4hBQD/kHgKaeqMnHnax879ALsQiwrm3mvXgBvN+Oyx4lbfOy2/fChQr/aeVTn
-5i/mhWakkrD4q8F0MiivJY7gzMOZV3m60gWzM1v2lBUTNSpOFyOI6p3GW23EUVog//NM7a2ABUQf
-3uYpah6ewQYpYJ5AcJQwe6zKVHgX4xYSUsKD1upJjVJF7XOmwPHE+eVurI5GorxunwQTVUVE5vxy
-OWXNPAuHNJ4ddQZsjA5hu6yXirgtbWcmEHCggeKNTDcQsGNND46HYXc/bzPzhr1A9nFjYv6TaQs9
-8YsueRlLoEA4Gt21JVwq6Mvt5ArxuhES9kM+3cABSUatmf+GbL7TNroMoU0eBg0JFgGLzTOky5rh
-syNT7XykLWYJz7pmnSAlJgUQpnhdasTyiNZwas9Zyli0h//BEryEl+hS5y1NiWz6ABoTQvmO1w9F
-rh5HpaG2LMw+DGPSF47bORxi5NCz4eB88pLbPLQRIIjJ/xv6S+eqLGzgf4kxe6csKzCEnZfOrnDE
-YRGwOXfjz1x3sDHMbzbDrk2ECWbTg57wf85ea0OBYtf84B0m35VwykoPfvs7pOi/+gZ9Qj4tkQ71
-tmhVqkwwUlgGdCiDPsFgslywMFEblesC4zXT57byQhl4xt0cp9BX90e9XLr2eYPe4gTYyOxs26ny
-sPt1y4aCm3jyth0KmNaVcooMgymXKZP7LpDAh0etd98LSfrUure1Mav+UJwN5A0loEfooCVcGyNW
-t2/4N9rxiZlshR4y1/lXj7N5oaBT8GLqblHGXcpRm9zOsPaoHVXn9jiBQl+HqiAVgysQ5Dtc/PQ4
-fzyf8kwBvas0OqMHX5MzXWoBdjlLPpiXSRtfSVYWnHGILZM7ecOXwUViaTj15mgEIHW23g0vu6Zi
-nUll3ufdtAqN1O0jXmx4dSXC/lQNQrHCHUprq6+gFG1eiYANSBej5HtUKwukW7+rrfXzyhrfhwQD
-Nt4gMTM+iljk3fJFpONwERsdcelxKJxtWDD3gVB/E5RWnwSLJ48IsxUQ2u81GByLIPCSHULFF4wC
-RMETyDUAmegNy6JvBF9pz/a7iaAB7CIxIUENK9mVnqsJocPPmSsgoTvzuaN67TCQYNdAqUvZEB3Z
-jPVhiKxTHgbe90YG+M3Unx5Gtpndpg6qQ/GuyU0DP5/bbUmcuBRfp5MqwvKub4asPodnVFEcLu5p
-0GElrRV/ehlEX7XyQiCrXsqMJkaiquVW3j4mpyEfqJxnyeKxiHcuZqw8qoeWLWJ9ZptpeACrsjcg
-yOJyu/WxbxfOlmPBA/JyqOLQajTKSSQdbUKwLRjWqdwORqyVjcakGOruWUgzyiWPsiydGULSowa0
-6EhrhYtFwpCa/Vr3JnmgvUkHj4MVJu3Toc4/ln3ccoptkLB6x4++u82f1HAzJhtAv9B0PnLNq74D
-q5wT82J5Mid0Lp7IctFCWwwrAtPKXjreW5eHfWXFW+T8I61KhX/rBcP2nurHuPR7KmQkB//duaP7
-Vc3hla5cA3JRZLuUWfydLqOvgH9CNGmz/L7WBKDQalNGFfGoQV1+zYUMnNltQINI/yVNULOE1MC0
-aIUFgKRsi2guO+LLio+e7YNu4NYUtK7MbXqjS+pp/ClSfOA0ivUTZl62JtTXUAVSaPPAx2fzeXRv
-J7sQN8ZcmraPbMz+jkEnRkQzz9gEhawIjLqfjU3DvsPqd3U0tGphlKb8RLoOCAXVcRNJ8RBqFHlk
-mn0K4boaozh97ne24gvy7ykdN0LNlidPl2HjOc/rzZlvbaLoi8nCauGJeRPRCctZGbfpCHBfeuY9
-4TIrMRfeuqBef6ALtxX+pK8OF2shqDW6lr0L4LCB5xvG0HrbRplVtdKdeQPATqMmiqIxVoEwb7fe
-DaaWKwCZLinMIIl9aE9Rg09FQQbhBCLXhYOJpTXl43npgKk0xTWkF9I/nxKRNtPg1qSdHw86T7Jo
-i0wrL1ppUO5tMt1EP6AoFzJPFJI90VD8ICt/wRjF+YZkqqGM1wlDcfmN8woDVmzQSN60i0XRdmBn
-tskBQ/GUqQU6VYt8Bm39toDytbPJCld2wabpcOGKTpupaUNxKf0UqVoVnqroUcr5VUs3e8PhEtJ8
-A7EU3TshGnnEdpLT/Bfe7vSsnTmQ80dphyTuE5QpTVacKY8LGcmfPk1XgJzwt+jleQGVbcWLVscF
-0Uc6CdWeZPVPvUYg8xJN8y1FkkNUQA24LNgr5aEWnoyJ712Gq7uF/KUXXg+4R3HB3omZ9YJxN6wv
-4N9XBc6QDlB7huZuIUo/Kzc9MyPvVM3f4y0H9oawzHhou2AUaLudg5WLEQKDqEpRhbHEKpIq+jaf
-dqaBvoZkEGLtLOFnfoelhZd3OybeGve0JdlCs3d2FSiFXGPdpAXkBpBuQtqD4zkTprwGo+0LxC7q
-vZEI99cOys8V7Z1myY3XB9/ubt62ruCd11xNx/GlGYDCpb9HOIzZ+3T4IS62lgaciKxKtzi7G/Un
-95kvzsKnB2Dcb9tZEUyGStdfOG5smkuKCDR/gJK0T/B6TROJfQRmHlthr1WTTHW//qVAs6oq8aUZ
-OY78uZxdtgk80tiwi/mSgkh4cjNAR7JCMauL/PQkM7DycB/sYTagnxEYQvhHaJYgiUeN/XUgb6Vr
-M5oNCbW/UGDULN4Zpp+7YHlvbD2qVNC2GumuwZgDA9QoVXSdeFuVRhBJ1YCkD7Na31ETFbyua98A
-9nbOLuQUAOmvbVbAJjU+GuPIUA4Vlva8rhoytEQYts9vVBQEmHDfRsEsufAh42rgRNk4U++1pVzG
-WZSqF4g44hDQ5VPPSNP2f1+b/zctZXPFvH9hsZPYxqfct+jAEmPHDOVg+zbX4DXxM0A0V0o47lgn
-Okpp4bs13b9eiqwrqizpFrCTGLyblrUG0OTOE+oUITSMeMh/2fazjKZ7gRE4eBTypI/2ellyZdlj
-hKed0/fzdGsW0CSE1jszA00wTpaTJrqKdUaWrfx1wKyaV3xNLl64Ci4ikc7uQjZl8EiSC8YgmHQb
-K3R2XyxYxFq0+lnnurVm9sdy6Z5rpjlUdKyP0Zs6EbOWxCWP6tCZuyS+9I2m02hn0sRuSUM9r8Y1
-iteLRPobQ/4OqFmGLoMt1PavgTj1xw69H5gRNbZN3z+l5CF+Ode2V3OK3QRU6LKvTwH1q8MvADXG
-0h9B4qOpzmXTRWigi9O1wv9g+QshgA/orsHuyBkJT7LVNoiEM4yqjJUz8njDgxLK6p2JloLwwpnJ
-ipk2k25tAo2iRQlPnI1TONPLI57CABteHpiohnKZfe7dHd/GpPMEa0igEZirO5Yk0AYoeq8GUPcB
-ZnaaLlrbsRufpo5y/nKOLJzzBWDHkoV93DGNF/4OP+/oo0BlgiwA2da/x14PZB+yuzF1R0Exmy7J
-Z0XK9mwB18/Ys/cZsmKMrOO5dkatsENKadNc0SpQ98sJRE1lUODQx0b3ocOXw/ybd1vmHI6m1BT/
-ceZdhc5u+8dJzgq7udSGTTEECwmZj1DM1qqfYJEuE6ayYuqpXnZkHm4QUErEjofE3XLn8bzxncBI
-L960fraamuZSbc1bLOlYZzuzjHzjKoKylrv24MXKzEvJviarECafrCwOl92jlmEtVLzcE9vgCQZu
-DZmdB9GkK+nVE704Q/GLtjch/Nyw2i/hun/MuNTE9VTo6NoZqlCpbnHyTS+Hjpzmhu9D0v4tdsBS
-80ypC6a4B12f31DRWki5JPI6l2LA1wNhyrqG4VvIDiH3JuWWnkPP8tCM6t/l/u8At2Zwq0e6pkZK
-I7tPWnFSx8umoBeUnRaIUTP1P+ATxVZ98k0xRpb6BB+icOU2v3jufSUtRE75Hd/QBH7OOJHycsmp
-n+S1WVn1+Qt8TJjooFnAw9ei/7yHulHHX999AH0IapmB+c7ayhD3jBgnIBbbxn0tRnaWz1JuZb/F
-f7ZjYyB6UFQLeMiLiX+aGAGSSHRwzNeMBzHOVKBayIrCIfWjQE2/EHbcKTxQv6ElRQ1tNqOWsT2V
-uJoFEHRV6UmgXYl6XGCnIVTp/76n4PA214QqcinvB5IZKgWahGm/lv46egNa7NJo4xh0tdGltk92
-8HCjhxmGIJpK0ywqXmuNT5K6dtYLO+Ur6Tm9kt8v/33zA1tNEJoby7E056RXvn6hrz2QCLh3vg2c
-JFiPfM2A15UMQSPuqwLJqXK0CjojFi3Dndi6nveU2C7oTZq7u6S+I5UPRwWJRlaQ3w0SyL7lrbbw
-9yTaOL+N/Zo5FHeJ62aylzIoGaAJ676Fab7JVwVt7cHbzuWXHL227mKGGW8gO/nD28vNHFtUdbHu
-xbRMMaA0Uva3MEl5cQbULt7JIDPL/RPwm4VSJHSHlQtC1po8uQLJpZN9AEfu0PFdokC0ACUasTLk
-LrdVtBGVW6m/1/0gCpo9meizCH8SQsvYO9rksZ3tWJimjsQHndqIHfUjyX/+KROZQkgQ9FWXQXs4
-8eERX2HHKK5pL9+AzLyZrwuxUQpBMlPPtGvEkcTAnJuqyrA5eytKY78DwMp4BeOR/q/IjCDctEC/
-6AFFbhu0JeEFcyiJTwBf1AXSREo7N9wzciAN2m2N95zKeYWHu/D2VzNgeq4R7L7tNiyOKTDAAfmT
-Ea+wKKhtpngQpSFu1VpV7giz3IqHMA4nrc9ccmLVK+Z6N/u3v2pXmGBNornEyjvktcLC3jhKoBHT
-TsAVLSsnQeaWjU5/Hd92EJSavgpMsvDDNj9tNWDh8ro2OX3jAsBEtxt6yzQooMUxF002p5b/lqmO
-uXLZQwSwbOc44waOrmctx6FYJqJZwZZAbfhyPDB8AGDp81P4jMLHhGHkAqErjsFoWx2vM8aaxBfF
-PS4Jjx3xE0OEMQzNY5qqYh8i9WeAaiCCl3X3WhKyB5ZhXA6ErIjCAeQ2smmNvJSrsDwRYNO2IiWg
-lfotWi2qKPKVPAnOyFTaYGBaNMZf6Eg5ybezJU5dQ1lQDz2mqG1miZROH1+alodgVx0oGnc2grne
-4gu5qlhlqoudtcWcP0dWM0zZ2GZK1sDlJ+AS0Cgbyt9M8XbIYU5xMrFDpEsJizVEoMtoQpDMqRI4
-KuCvfwBGmxGwTjSXzrR6Nw4fq2JDinWzdQmcLpWYfYsO3I4nvnmdtFl9RLGGANr0TSbYVxiwfjmk
-euGaB0Kt2Ry2nyiNq14IJVs7zIozj+x9TzqCSCyePk6IpbhnsFmBRK65q1fFpHbYYXr/UIM8jCSk
-dUDLXoyfLvszxlD0tHQzgNu8d9hqoSGwQCYN6ix6gn6kS4B4iNz/sI3MWJ1VUwkFU8YpEpPKaFon
-1TxGo4K0/hvOJfx2fLiZ0r9OjTYA1mbC6d+kjkvk9oK21CVpJj7ALOwA3GmQvZPsdlvMG0vEEmBe
-t11jeVKR657VQUoWYAxbAVNjG2hacCjshRMGuS1khaOCr97MirfgBfKw63DgQ4rm2bX8JTTBH+V3
-ObFeE1AcEPeWD5D77W5jBArurklnSTAEpVKRdt0uT/dC+iN51yJwWvIbTVTfGewLGYXbbS3+wA7V
-Q8KOLbuN9tG95jAvMZMeNPFJL9tYXCNTUOuFbQs6X3V8ILTD1UxYzshE5zudQ5aWYAObClGxHx1n
-xEIVPyDbk0LFNZwh7DcJDoMFf2Qdffk4nyJ23yQkM86wJrXpOtF0GKdYkLbdGrB2duviJMzMXQXT
-Ie1ccURnOAoLKR+FLlksaQS6iK/V55M2QDW8eykVA25vAcKzVRWJ1S3Zfpa51m8P04HNI46aLdHk
-saQ/eHurj40eUxbJK+WGv8wY8RszYdyGcxaC+HLlsIZp28MWDA5VWZaVvvyQ8YLXRUVphdP7GE1T
-5Kv9bAO2n7VO6hGeufmwSG95Vk3k1KkXv9ZTZU5PdxF/ichVT3kQ8+vQDtWzI74xRzKXbk52R3wx
-higxiCrs1gA8+R05gaPs/PtgLW0naw2Sl2xGQ6bTC+HbJic2hPAxpXxRV08J+JZ52IzAXGZQZ2/c
-b5ofufhXFaDjFiDNcqE91cwJHtUPOkcV4la9sTCoNpZ8mXZ+gw/d8By9WS/Wj1ZQd9UWBWEe7U7W
-fyJSAmoGcRX4HzBsa2SaCqX9JTFPJItlUstbIrIEVZyPW2rZeCM60OuEYzLlRc7K78Co9EZprCzk
-VRXo007D3734qAgkThI1DAiGESuOrjVqsJ5yxsa/PoivEoLRwCB4Ap7IbdXnjRkadCgBCW8LMTXm
-95+RDSVpyDUKlL4LS+dkDVt6De9CCgh314ixP+D5ZZGki9YlI2htDIMvoZjvjEdtKoxXYM/tvnK4
-c6hvYy3e73diZtyVUMEj7ZRvO7yiTym0/s7K4ZMXFoROISBo/hJHGBCT/RMCK7u99HF3CYGfpUEA
-cNHQmQZ7+18VHswVakpv7XyMSVCxZAncHA2f7JAgRfAmnjwClrYnIz8M76aXCtw9U184dg9/yUs4
-M8leJs1Lq7CRHPYoewJUNyZRTwHwXyAwlNWD7ib5gKXetFHchuSAMER6bomFE2be5Kd4br4OiGd0
-vFIQjduDJ9jxeVE92y+dr8HZLXOnD/hyCcHaqETPUv2oZyeMZLDIwB4A/dVycUAr5sD14PSH6imD
-7sjp2NCWTeCz2e9LsMichUORmw/uFLUyLxiqbS2QUDSYufdt8Vmx+qA72XEXSa1dInks0f/bTiLg
-ip+9mTwwJUdZBNxttesv1UPo5IGF7dEirFGD60ro2jFjEjzBMDY9KKSPVfq8QYrmui21cchtllOH
-cB3mGTvnmy1uefMBUoQpDSIqD5EzCOw/KNQ5h8vngFoZLrFB+yOR7reNzvvpCsAaU1l5Yu5MnAsJ
-IhWhlX8BQ2Q+vMJ/jDqKGflwrFq3o06BIVBX0IDIvt4JNWs/l9hkKVQ5KS0uUrqRuIm/BUjOfvWA
-0YkjBa6k5J3SNBFKbUZqM9XwZtYXIaGOiKcmAEHiRxbr4ta50k769bqeC1Nyw1VwB6sIAauaYIgE
-zZCj2rNbMYUe6rkWHSYYsU40v3RsiEEI1Sx54Ln6I8QjpOOPJrpkVquPRa+q2yR3p1Wtl+Qht7Zn
-6N6oYfjbWb6lyX89/ajwovaZxWHdMjEi8dTu62v0AK+H8qo69y8Lj1USKWl4t1cnNsXPxob7ctp1
-0ZsGhes/Cpy1QLo0DkKpJscL7mB2c3wRB6tVYJLJGG0sBYRY79Tv1NAvfm/wLZY5EsrZQiVp5bQe
-pM6LCNQrzdoacfZhG8Wv0Xhkg9N66j6qz/3jAun91r+8U16idIq77lKFpPo7T19+cB2ujAJm5ED+
-vs2nB4d8P9A2GjsRv7ajmVPimjq6xfv4XqRjSLZwKJxAQSIYc5y3S73bJozt3ur/RUQyR8SvMszL
-FlmlFHmONlao8RtEkYH6OKr9pVDnoS28Jy20KrCategdJSyai3gk1f/rZ4baWF9g34TGdTYptf9u
-jy6cJ2lrCRYqH9nrGsFHlZgY5mIz9LBfBz6/U7gh3pzEr4OsgcxTICVRn+8V4E+vMq/ndq8a3Wms
-3hGDrvC/2NS9NKKQpDO8NSjS+gkpYZ70GMnt3PNrQgLpz0QkVx7MIXSyJZBfNyxNaijP9AK/rW69
-VSHxRJCFnDchl1kPrmOtqopE4XAwIwGJHRNQIWo4BCJfbl9tG52vqsf/tBpPJ9fSfnFZQcI/uZLO
-jAaUqW8KZl692diENjavLCd/m7j48Sv01mrD1luijDG4reLsKz+mQrgnuwQG+XtM/m+3hREjFX1O
-VM/cHcCIbVzLmrdTGzmM+vweRYA5KpyYCyt/bEloE9vonnR+SgTjH8+b4kbSdOFUTrvA2ukNepRj
-MuMEAIq7gVXVlrZMQcm5u0QcGyVQF6t3jcxBOM+GptwaQrRhvrV8q664FknJRufo4gkihycnzdWp
-TNmCAOC2URCqPozFiMIsSb7vV+qfHwPkfhGMLmSbN4jHmFAm/BCpLTfSN8MM8XaL9GYMl46aKqd6
-45q5HqVVQQpeOxUm70VeEHlZTxDpC1pbIr9gd4CZqZFopuYxZVdfrFeU9VTrD/dqkyRfniU25Hqe
-fa9+Mj4LtkhtDFE+gbuOoybjdVRW0YzutGygWxoeLuCH77dBNOQaK4eIOlJFXeAZKur1b3xEqMej
-aAWHhOpVdI8FBUnfo4mrLGdwgBiaMQqJQ4YGhOYNCZMP0sMi7Pjcm/eojuNTq/qYNjsvG3j7GkVd
-BeW3MTjEdcwwRFJKFOlwNHgWxwlkZpuEk02DxkZKCg+p2vyeqpBnNDlvCxZEbLlxtDBhxOLP466c
-SUbmWfxU5WZKpdkjoKKtxUfJzqbkWNuQJ2De7bwz72DvrVeC7D4Ep4vwYyFK/s93TKYHzHOuUM61
-WT7YczzZg0ZcxzhIbfn3jJah6AQ7NcIq4zrJAcXbpcYu4UQQzapoBxj5x1PfsuHJOZSggdmMyfbg
-vSQbDdIhFYb8zJ3NnmdSG2amVEU+FaTHX1+iUQ00PUhDCjWYgfpz/CX0uO6DkHoZyG/nhskmdutn
-nHJ0lT3G6Pbd/yedcWRGhPu7uqKhvxp3NaS9SHHnACOLSLgN+Abe8dXc9idoxItdixC2n0UzC8bI
-1WYDV08RKy0MNY1jczT29y62XqMPzol/RmiHLRwP6bSXZB4JUicYxA2gkcRMkXoEhJKFXN6AvREV
-DwLKNhpSDIvM9fDrglt5PggARI37OhzWIboNEMb/eIY0BoLY17bH3z76eu87v9g88gGJlgzN42TH
-Ppm0BSlPUmcVYrg+o8Vze5b/Z4E+BO4BeE8zmcL7UE4/5E5qCA0YYZQwhfOABAkUZuvxnm2JkM7G
-LUKcX1Is
+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
+RduhTOFPizU7Tojp/yuOeA==
 `pragma protect end_protected
 `pragma protect end_protected
 module FifoDDS (
 module FifoDDS (
   Data,
   Data,

+ 83 - 105
src/src/WrapFifoChain/FifoDDS/FifoDDS.vo

@@ -1,8 +1,8 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
-//File Title: Post-PnR Simulation Model file
-//Tool Version: V1.9.9.03 (64-bit)
-//Created Time: Tue May 28 15:49:41 2024
+//File Title: Post-PnR Verilog Simulation Model file
+//Tool Version: V1.9.11.02 (64-bit)
+//Created Time: Thu Jun 26 11:09:20 2025
 
 
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 module FifoDDS(
 module FifoDDS(
@@ -37,30 +37,30 @@ wire VCC;
 wire WrClk;
 wire WrClk;
 wire WrEn;
 wire WrEn;
 wire \fifo_inst/n20_5 ;
 wire \fifo_inst/n20_5 ;
-wire \fifo_inst/n26_4 ;
-wire \fifo_inst/n537_4 ;
+wire \fifo_inst/n24_3 ;
+wire \fifo_inst/n423_3 ;
+wire \fifo_inst/n538_4 ;
 wire \fifo_inst/rempty_val ;
 wire \fifo_inst/rempty_val ;
 wire \fifo_inst/wfull_val_7 ;
 wire \fifo_inst/wfull_val_7 ;
 wire \fifo_inst/wfull_val1 ;
 wire \fifo_inst/wfull_val1 ;
 wire \fifo_inst/wfull_val1_0 ;
 wire \fifo_inst/wfull_val1_0 ;
 wire \fifo_inst/Full_1 ;
 wire \fifo_inst/Full_1 ;
-wire \fifo_inst/Equal.wbinnext_0_7 ;
-wire \fifo_inst/rempty_val_8 ;
+wire \fifo_inst/Equal.wbinnext_0_8 ;
+wire \fifo_inst/rbin_num_next_0_10 ;
+wire \fifo_inst/rempty_val1 ;
 wire \fifo_inst/wfull_val1_2 ;
 wire \fifo_inst/wfull_val1_2 ;
 wire \fifo_inst/wfull_val1_3 ;
 wire \fifo_inst/wfull_val1_3 ;
 wire \fifo_inst/Full_1_2 ;
 wire \fifo_inst/Full_1_2 ;
 wire \fifo_inst/Full_2 ;
 wire \fifo_inst/Full_2 ;
 wire \fifo_inst/n4_6 ;
 wire \fifo_inst/n4_6 ;
 wire \fifo_inst/n9_6 ;
 wire \fifo_inst/n9_6 ;
-wire [0:0] \fifo_inst/Equal.rgraynext ;
 wire [0:0] \fifo_inst/Equal.wgraynext ;
 wire [0:0] \fifo_inst/Equal.wgraynext ;
-wire [1:0] \fifo_inst/rbin_num_next ;
 wire [1:1] \fifo_inst/Equal.wbinnext ;
 wire [1:1] \fifo_inst/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_r ;
 wire [1:0] \fifo_inst/reset_w ;
 wire [1:0] \fifo_inst/reset_w ;
 wire [1:0] \fifo_inst/rbin_num ;
 wire [1:0] \fifo_inst/rbin_num ;
-wire [1:0] \fifo_inst/Equal.rq1_wptr ;
-wire [1:0] \fifo_inst/Equal.rq2_wptr ;
 wire [0:0] \fifo_inst/rptr ;
 wire [0:0] \fifo_inst/rptr ;
 wire [1:0] \fifo_inst/wptr ;
 wire [1:0] \fifo_inst/wptr ;
 wire [0:0] \fifo_inst/Equal.wbin ;
 wire [0:0] \fifo_inst/Equal.wbin ;
@@ -82,41 +82,39 @@ LUT4 \fifo_inst/n20_s1  (
 	.F(\fifo_inst/n20_5 )
 	.F(\fifo_inst/n20_5 )
 );
 );
 defparam \fifo_inst/n20_s1 .INIT=16'h5300;
 defparam \fifo_inst/n20_s1 .INIT=16'h5300;
-LUT3 \fifo_inst/n26_s1  (
-	.I0(RdEn),
-	.I1(Empty),
-	.I2(\fifo_inst/rempty_val ),
-	.F(\fifo_inst/n26_4 )
-);
-defparam \fifo_inst/n26_s1 .INIT=8'h0E;
-LUT3 \fifo_inst/Equal.rgraynext_0_s0  (
-	.I0(\fifo_inst/rbin_num [0]),
-	.I1(\fifo_inst/rbin_num_next [0]),
-	.I2(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/Equal.rgraynext [0])
+LUT2 \fifo_inst/n24_s0  (
+	.I0(Empty),
+	.I1(RdEn),
+	.F(\fifo_inst/n24_3 )
 );
 );
-defparam \fifo_inst/Equal.rgraynext_0_s0 .INIT=8'h1E;
+defparam \fifo_inst/n24_s0 .INIT=4'h4;
 LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
 LUT3 \fifo_inst/Equal.wgraynext_0_s0  (
-	.I0(\fifo_inst/Equal.wbin [0]),
-	.I1(\fifo_inst/n20_5 ),
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
 	.I2(\fifo_inst/wptr [1]),
 	.I2(\fifo_inst/wptr [1]),
 	.F(\fifo_inst/Equal.wgraynext [0])
 	.F(\fifo_inst/Equal.wgraynext [0])
 );
 );
 defparam \fifo_inst/Equal.wgraynext_0_s0 .INIT=8'h1E;
 defparam \fifo_inst/Equal.wgraynext_0_s0 .INIT=8'h1E;
-LUT2 \fifo_inst/n537_s1  (
+LUT2 \fifo_inst/n423_s0  (
+	.I0(\fifo_inst/rempty_val ),
+	.I1(\fifo_inst/reset_r [1]),
+	.F(\fifo_inst/n423_3 )
+);
+defparam \fifo_inst/n423_s0 .INIT=4'hE;
+LUT2 \fifo_inst/n538_s1  (
 	.I0(\fifo_inst/reset_w [1]),
 	.I0(\fifo_inst/reset_w [1]),
 	.I1(\fifo_inst/wfull_val_7 ),
 	.I1(\fifo_inst/wfull_val_7 ),
-	.F(\fifo_inst/n537_4 )
+	.F(\fifo_inst/n538_4 )
 );
 );
-defparam \fifo_inst/n537_s1 .INIT=4'h4;
+defparam \fifo_inst/n538_s1 .INIT=4'h4;
 LUT4 \fifo_inst/rempty_val_s3  (
 LUT4 \fifo_inst/rempty_val_s3  (
-	.I0(\fifo_inst/Equal.rq2_wptr [1]),
-	.I1(\fifo_inst/rempty_val_8 ),
-	.I2(\fifo_inst/Equal.rq2_wptr [0]),
-	.I3(\fifo_inst/rbin_num_next [0]),
+	.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 )
 	.F(\fifo_inst/rempty_val )
 );
 );
-defparam \fifo_inst/rempty_val_s3 .INIT=16'h4221;
+defparam \fifo_inst/rempty_val_s3 .INIT=16'h9009;
 LUT4 \fifo_inst/wfull_val_s3  (
 LUT4 \fifo_inst/wfull_val_s3  (
 	.I0(\fifo_inst/wptr [0]),
 	.I0(\fifo_inst/wptr [0]),
 	.I1(\fifo_inst/wptr [1]),
 	.I1(\fifo_inst/wptr [1]),
@@ -133,8 +131,8 @@ LUT3 \fifo_inst/wfull_val1_s9  (
 );
 );
 defparam \fifo_inst/wfull_val1_s9 .INIT=8'hAC;
 defparam \fifo_inst/wfull_val1_s9 .INIT=8'hAC;
 LUT3 \fifo_inst/wfull_val1_s10  (
 LUT3 \fifo_inst/wfull_val1_s10  (
-	.I0(\fifo_inst/wfull_val_7 ),
-	.I1(\fifo_inst/wfull_val1_0 ),
+	.I0(\fifo_inst/wfull_val1_0 ),
+	.I1(\fifo_inst/wfull_val_7 ),
 	.I2(\fifo_inst/reset_w [1]),
 	.I2(\fifo_inst/reset_w [1]),
 	.F(\fifo_inst/wfull_val1_0 )
 	.F(\fifo_inst/wfull_val1_0 )
 );
 );
@@ -147,47 +145,48 @@ LUT3 \fifo_inst/Full_d_s  (
 );
 );
 defparam \fifo_inst/Full_d_s .INIT=8'hAC;
 defparam \fifo_inst/Full_d_s .INIT=8'hAC;
 LUT3 \fifo_inst/Full_s8  (
 LUT3 \fifo_inst/Full_s8  (
-	.I0(\fifo_inst/wfull_val_7 ),
-	.I1(\fifo_inst/Full_1 ),
+	.I0(\fifo_inst/Full_1 ),
+	.I1(\fifo_inst/wfull_val_7 ),
 	.I2(\fifo_inst/reset_w [1]),
 	.I2(\fifo_inst/reset_w [1]),
 	.F(\fifo_inst/Full_1 )
 	.F(\fifo_inst/Full_1 )
 );
 );
 defparam \fifo_inst/Full_s8 .INIT=8'h0E;
 defparam \fifo_inst/Full_s8 .INIT=8'h0E;
-LUT3 \fifo_inst/rbin_num_next_0_s5  (
-	.I0(Empty),
-	.I1(RdEn),
-	.I2(\fifo_inst/rbin_num [0]),
-	.F(\fifo_inst/rbin_num_next [0])
-);
-defparam \fifo_inst/rbin_num_next_0_s5 .INIT=8'hB4;
-LUT3 \fifo_inst/rbin_num_next_1_s2  (
-	.I0(\fifo_inst/rbin_num_next [0]),
-	.I1(\fifo_inst/rbin_num [0]),
-	.I2(\fifo_inst/rbin_num [1]),
-	.F(\fifo_inst/rbin_num_next [1])
-);
-defparam \fifo_inst/rbin_num_next_1_s2 .INIT=8'hB4;
 LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
 LUT2 \fifo_inst/Equal.wbinnext_0_s3  (
-	.I0(\fifo_inst/Equal.wbin [0]),
-	.I1(\fifo_inst/n20_5 ),
-	.F(\fifo_inst/Equal.wbinnext_0_7 )
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
+	.F(\fifo_inst/Equal.wbinnext_0_8 )
 );
 );
 defparam \fifo_inst/Equal.wbinnext_0_s3 .INIT=4'h6;
 defparam \fifo_inst/Equal.wbinnext_0_s3 .INIT=4'h6;
 LUT3 \fifo_inst/Equal.wbinnext_1_s2  (
 LUT3 \fifo_inst/Equal.wbinnext_1_s2  (
-	.I0(\fifo_inst/Equal.wbin [0]),
-	.I1(\fifo_inst/n20_5 ),
+	.I0(\fifo_inst/n20_5 ),
+	.I1(\fifo_inst/Equal.wbin [0]),
 	.I2(\fifo_inst/wptr [1]),
 	.I2(\fifo_inst/wptr [1]),
 	.F(\fifo_inst/Equal.wbinnext [1])
 	.F(\fifo_inst/Equal.wbinnext [1])
 );
 );
 defparam \fifo_inst/Equal.wbinnext_1_s2 .INIT=8'h78;
 defparam \fifo_inst/Equal.wbinnext_1_s2 .INIT=8'h78;
-LUT4 \fifo_inst/rempty_val_s4  (
-	.I0(\fifo_inst/Equal.rq2_wptr [0]),
-	.I1(\fifo_inst/Equal.rq2_wptr [1]),
-	.I2(\fifo_inst/rbin_num [1]),
-	.I3(\fifo_inst/rbin_num [0]),
-	.F(\fifo_inst/rempty_val_8 )
+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_10 )
+);
+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/rempty_val_s4 .INIT=16'h871E;
+defparam \fifo_inst/Equal.rgraynext_0_s1 .INIT=16'h0BF4;
 DFFP \fifo_inst/reset_r_0_s0  (
 DFFP \fifo_inst/reset_r_0_s0  (
 	.D(GND),
 	.D(GND),
 	.CLK(\fifo_inst/n4_6 ),
 	.CLK(\fifo_inst/n4_6 ),
@@ -217,40 +216,12 @@ DFFC \fifo_inst/rbin_num_1_s0  (
 );
 );
 defparam \fifo_inst/rbin_num_1_s0 .INIT=1'b0;
 defparam \fifo_inst/rbin_num_1_s0 .INIT=1'b0;
 DFFC \fifo_inst/rbin_num_0_s0  (
 DFFC \fifo_inst/rbin_num_0_s0  (
-	.D(\fifo_inst/rbin_num_next [0]),
+	.D(\fifo_inst/rbin_num_next_0_10 ),
 	.CLK(RdClk),
 	.CLK(RdClk),
 	.CLEAR(\fifo_inst/reset_r [1]),
 	.CLEAR(\fifo_inst/reset_r [1]),
 	.Q(\fifo_inst/rbin_num [0])
 	.Q(\fifo_inst/rbin_num [0])
 );
 );
 defparam \fifo_inst/rbin_num_0_s0 .INIT=1'b0;
 defparam \fifo_inst/rbin_num_0_s0 .INIT=1'b0;
-DFFC \fifo_inst/Equal.rq1_wptr_1_s0  (
-	.D(\fifo_inst/wptr [1]),
-	.CLK(RdClk),
-	.CLEAR(\fifo_inst/reset_r [1]),
-	.Q(\fifo_inst/Equal.rq1_wptr [1])
-);
-defparam \fifo_inst/Equal.rq1_wptr_1_s0 .INIT=1'b0;
-DFFC \fifo_inst/Equal.rq1_wptr_0_s0  (
-	.D(\fifo_inst/wptr [0]),
-	.CLK(RdClk),
-	.CLEAR(\fifo_inst/reset_r [1]),
-	.Q(\fifo_inst/Equal.rq1_wptr [0])
-);
-defparam \fifo_inst/Equal.rq1_wptr_0_s0 .INIT=1'b0;
-DFFC \fifo_inst/Equal.rq2_wptr_1_s0  (
-	.D(\fifo_inst/Equal.rq1_wptr [1]),
-	.CLK(RdClk),
-	.CLEAR(\fifo_inst/reset_r [1]),
-	.Q(\fifo_inst/Equal.rq2_wptr [1])
-);
-defparam \fifo_inst/Equal.rq2_wptr_1_s0 .INIT=1'b0;
-DFFC \fifo_inst/Equal.rq2_wptr_0_s0  (
-	.D(\fifo_inst/Equal.rq1_wptr [0]),
-	.CLK(RdClk),
-	.CLEAR(\fifo_inst/reset_r [1]),
-	.Q(\fifo_inst/Equal.rq2_wptr [0])
-);
-defparam \fifo_inst/Equal.rq2_wptr_0_s0 .INIT=1'b0;
 DFFC \fifo_inst/rptr_0_s0  (
 DFFC \fifo_inst/rptr_0_s0  (
 	.D(\fifo_inst/Equal.rgraynext [0]),
 	.D(\fifo_inst/Equal.rgraynext [0]),
 	.CLK(RdClk),
 	.CLK(RdClk),
@@ -273,16 +244,23 @@ DFFC \fifo_inst/wptr_0_s0  (
 );
 );
 defparam \fifo_inst/wptr_0_s0 .INIT=1'b0;
 defparam \fifo_inst/wptr_0_s0 .INIT=1'b0;
 DFFC \fifo_inst/Equal.wbin_0_s0  (
 DFFC \fifo_inst/Equal.wbin_0_s0  (
-	.D(\fifo_inst/Equal.wbinnext_0_7 ),
+	.D(\fifo_inst/Equal.wbinnext_0_8 ),
 	.CLK(WrClk),
 	.CLK(WrClk),
 	.CLEAR(\fifo_inst/reset_w [1]),
 	.CLEAR(\fifo_inst/reset_w [1]),
 	.Q(\fifo_inst/Equal.wbin [0])
 	.Q(\fifo_inst/Equal.wbin [0])
 );
 );
 defparam \fifo_inst/Equal.wbin_0_s0 .INIT=1'b0;
 defparam \fifo_inst/Equal.wbin_0_s0 .INIT=1'b0;
-DFFP \fifo_inst/Empty_s0  (
+DFFP \fifo_inst/rempty_val1_s0  (
 	.D(\fifo_inst/rempty_val ),
 	.D(\fifo_inst/rempty_val ),
 	.CLK(RdClk),
 	.CLK(RdClk),
-	.PRESET(\fifo_inst/reset_r [1]),
+	.PRESET(\fifo_inst/n423_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/n423_3 ),
 	.Q(Empty)
 	.Q(Empty)
 );
 );
 defparam \fifo_inst/Empty_s0 .INIT=1'b1;
 defparam \fifo_inst/Empty_s0 .INIT=1'b1;
@@ -303,7 +281,7 @@ defparam \fifo_inst/wfull_val1_s0 .INIT=1'b0;
 DFFP \fifo_inst/wfull_val1_s1  (
 DFFP \fifo_inst/wfull_val1_s1  (
 	.D(\fifo_inst/wfull_val_7 ),
 	.D(\fifo_inst/wfull_val_7 ),
 	.CLK(WrClk),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n537_4 ),
+	.PRESET(\fifo_inst/n538_4 ),
 	.Q(\fifo_inst/wfull_val1_3 )
 	.Q(\fifo_inst/wfull_val1_3 )
 );
 );
 defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
 defparam \fifo_inst/wfull_val1_s1 .INIT=1'b1;
@@ -317,7 +295,7 @@ defparam \fifo_inst/Full_s0 .INIT=1'b0;
 DFFP \fifo_inst/Full_s1  (
 DFFP \fifo_inst/Full_s1  (
 	.D(\fifo_inst/wfull_val1 ),
 	.D(\fifo_inst/wfull_val1 ),
 	.CLK(WrClk),
 	.CLK(WrClk),
-	.PRESET(\fifo_inst/n537_4 ),
+	.PRESET(\fifo_inst/n538_4 ),
 	.Q(\fifo_inst/Full_2 )
 	.Q(\fifo_inst/Full_2 )
 );
 );
 defparam \fifo_inst/Full_s1 .INIT=1'b1;
 defparam \fifo_inst/Full_s1 .INIT=1'b1;
@@ -326,14 +304,14 @@ SDPB \fifo_inst/Equal.mem_Equal.mem_0_0_s  (
 	.CEA(\fifo_inst/n20_5 ),
 	.CEA(\fifo_inst/n20_5 ),
 	.RESETA(GND),
 	.RESETA(GND),
 	.CLKB(RdClk),
 	.CLKB(RdClk),
-	.CEB(\fifo_inst/n26_4 ),
+	.CEB(\fifo_inst/n24_3 ),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.OCE(GND),
 	.OCE(GND),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELB({GND, GND, GND}),
 	.BLKSELB({GND, GND, GND}),
 	.DI({Data[31:0]}),
 	.DI({Data[31:0]}),
 	.ADA({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/Equal.wbin [0], GND, VCC, VCC, VCC, VCC}),
 	.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_next [0], GND, GND, GND, GND, GND}),
+	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num [0], GND, GND, GND, GND, GND}),
 	.DO({Q[31:0]})
 	.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 .READ_MODE=1'b0;
@@ -347,14 +325,14 @@ SDPB \fifo_inst/Equal.mem_Equal.mem_0_1_s  (
 	.CEA(\fifo_inst/n20_5 ),
 	.CEA(\fifo_inst/n20_5 ),
 	.RESETA(GND),
 	.RESETA(GND),
 	.CLKB(RdClk),
 	.CLKB(RdClk),
-	.CEB(\fifo_inst/n26_4 ),
+	.CEB(\fifo_inst/n24_3 ),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.OCE(GND),
 	.OCE(GND),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELB({GND, GND, GND}),
 	.BLKSELB({GND, GND, GND}),
 	.DI({Data[63:32]}),
 	.DI({Data[63:32]}),
 	.ADA({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/Equal.wbin [0], GND, VCC, VCC, VCC, VCC}),
 	.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_next [0], GND, GND, GND, GND, GND}),
+	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num [0], GND, GND, GND, GND, GND}),
 	.DO({Q[63:32]})
 	.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 .READ_MODE=1'b0;
@@ -368,14 +346,14 @@ SDPB \fifo_inst/Equal.mem_Equal.mem_0_2_s  (
 	.CEA(\fifo_inst/n20_5 ),
 	.CEA(\fifo_inst/n20_5 ),
 	.RESETA(GND),
 	.RESETA(GND),
 	.CLKB(RdClk),
 	.CLKB(RdClk),
-	.CEB(\fifo_inst/n26_4 ),
+	.CEB(\fifo_inst/n24_3 ),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.RESETB(\fifo_inst/reset_r [1]),
 	.OCE(GND),
 	.OCE(GND),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELA({GND, GND, GND}),
 	.BLKSELB({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[79:64]}),
 	.DI({GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, GND, Data[79:64]}),
 	.ADA({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/Equal.wbin [0], GND, VCC, VCC, VCC, VCC}),
 	.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_next [0], GND, GND, GND, GND, GND}),
+	.ADB({GND, GND, GND, GND, GND, GND, GND, GND, \fifo_inst/rbin_num [0], GND, GND, GND, GND, GND}),
 	.DO({\fifo_inst/DO [31:16], Q[79:64]})
 	.DO({\fifo_inst/DO [31:16], Q[79:64]})
 );
 );
 defparam \fifo_inst/Equal.mem_Equal.mem_0_2_s .READ_MODE=1'b0;
 defparam \fifo_inst/Equal.mem_Equal.mem_0_2_s .READ_MODE=1'b0;

+ 3 - 3
src/src/WrapFifoChain/FifoDDS/FifoDDS_tmp.v

@@ -1,10 +1,10 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Template file for instantiation
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.03 (64-bit)
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-9
 //Device: GW1N-9
-//Created Time: Tue May 28 15:49:41 2024
+//Created Time: Thu Jun 26 11:09:20 2025
 
 
 //Change the instance name and port connections to the signal names
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 //--------Copy here to design--------

+ 5 - 3
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FIFOHS.prj

@@ -4,17 +4,19 @@
     <Version>beta</Version>
     <Version>beta</Version>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <FileList>
     <FileList>
-        <File path="C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
-        <File path="C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
     </FileList>
     </FileList>
     <OptionList>
     <OptionList>
         <Option type="disable_insert_pad" value="1"/>
         <Option type="disable_insert_pad" value="1"/>
-        <Option type="include_path" value="C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data"/>
+        <Option type="include_path" value="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data"/>
         <Option type="include_path" value="C:/Gowin/Projects/SB_TMSG44V1_FPGA/src/src/WrapFifoChain/FifoDDS/temp/FIFOHS"/>
         <Option type="include_path" value="C:/Gowin/Projects/SB_TMSG44V1_FPGA/src/src/WrapFifoChain/FifoDDS/temp/FIFOHS"/>
         <Option type="output_file" value="FifoDDS.vg"/>
         <Option type="output_file" value="FifoDDS.vg"/>
         <Option type="output_template" value="FifoDDS_tmp.v"/>
         <Option type="output_template" value="FifoDDS_tmp.v"/>
         <Option type="ram_balance" value="1"/>
         <Option type="ram_balance" value="1"/>
         <Option type="ram_rw_check" value="1"/>
         <Option type="ram_rw_check" value="1"/>
+        <Option type="vcc" value="1.2"/>
+        <Option type="vccx" value="3.3"/>
         <Option type="verilog_language" value="sysv-2017"/>
         <Option type="verilog_language" value="sysv-2017"/>
     </OptionList>
     </OptionList>
 </Project>
 </Project>

+ 29 - 20
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS.log

@@ -1,19 +1,28 @@
 GowinSynthesis start
 GowinSynthesis start
 Running parser ...
 Running parser ...
-Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
-Analyzing included file '**'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-Back to file '**'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-Undeclared symbol '**', assumed default net type '**'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
-Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
-Back to file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
-Analyzing included file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
-Back to file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
-Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
-Back to file 'C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
-Compiling module 'FifoDDS'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
-Compiling module '**'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
-Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.9.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol 'Reset', assumed default net type 'wire'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol 'RPReset', assumed default net type 'wire'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'FifoDDS'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 NOTE  (EX0101) : Current top module is "FifoDDS"
 NOTE  (EX0101) : Current top module is "FifoDDS"
 [5%] Running netlist conversion ...
 [5%] Running netlist conversion ...
 Running device independent optimization ...
 Running device independent optimization ...
@@ -29,13 +38,13 @@ Running technical mapping ...
 [60%] Tech-Mapping Phase 0 completed
 [60%] Tech-Mapping Phase 0 completed
 [65%] Tech-Mapping Phase 1 completed
 [65%] Tech-Mapping Phase 1 completed
 [75%] Tech-Mapping Phase 2 completed
 [75%] Tech-Mapping Phase 2 completed
-WARN  (AG0100) : Find logical loop signal : "fifo_inst/wfull_val1_s3"("C:\Gowin\Gowin_V1.9.9.03_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.03_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.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 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.03_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.03_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.03_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 [80%] Tech-Mapping Phase 3 completed
 [80%] Tech-Mapping Phase 3 completed
 [90%] Tech-Mapping Phase 4 completed
 [90%] Tech-Mapping Phase 4 completed

+ 139 - 149
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS.vg

@@ -1,11 +1,11 @@
 //
 //
 //Written by GowinSynthesis
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.03 (64-bit)"
-//Tue May 28 15:49:41 2024
+//Tool Version "V1.9.11.02 (64-bit)"
+//Thu Jun 26 11:09:20 2025
 
 
 //Source file index table:
 //Source file index table:
-//file0 "\C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
-//file1 "\C:/Gowin/Gowin_V1.9.9.03_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
+//file0 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect begin_protected
 `pragma protect version="2.3"
 `pragma protect version="2.3"
@@ -17,156 +17,146 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `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_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
 `pragma protect key_block
-HBNA+/9oSsy54/JlKoiN4gbbgk61v4S0vzu1SlxVV1FpSHLGFM3OwH9RYuOhFT+UXDcUiyGSTSim
-K+dcHv0CeFpV/YQWR5St8DdQGG+R45m6XWDErYGEafyEor0OduRaUiVP0XYqOL50oW/9d9x2NNiT
-ln6/o/IJCxIEaVblBTKR3tD4Ofb06tQw/6ZuEVhgWtapp5r+TlGiaQP6jx3uNfn+NBjuwyUzYkQ0
-MJjDVvgoM3zUdhRo+JtyCKggxSnoc2ym6iCL/mV/5ly8CtyjxhgYzms2pS3M3jxp5ii+uQ3L2s40
-krH8Dc9bcX5adde2FYFmhmRyz3sc5c38ia3cWA==
+h2Hk2PsTwq/dtAZ9cFVv1LIjE8XyjgauxqVI0H0KYFOYx3Oczh/IQEEmZNFaGIpF5+tpslMYL+Ka
++ZHdv2OmWeemN9OQUti1xK5PjD+tkvCGzpdHcDiZwF13UtlVVZAsEeOwAXH/+xl5iVD4XG1+sLw+
+0nK6e/8txanFzml+X3aHiYsP7g37sp/fbBNzYVGbvOdk5dBM9oFfusDzrd57y56OLNqQN8Xkw7X7
+YXRy46gZSPhUEew64wB1//OkcYXy/XR1SG8GKx0WW1dETf37zkyuWnWhtogDgOzFcnQjd4KWvyx8
+sPn/fYjDgkHcdGVe++mN41kzGiD37X68lMYU8Q==
 
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=7872)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=7312)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
 `pragma protect data_block
-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
-LUKcX1Is
+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
+RduhTOFPizU7Tojp/yuOeA==
 `pragma protect end_protected
 `pragma protect end_protected
 module FifoDDS (
 module FifoDDS (
   Data,
   Data,

Dosya farkı çok büyük olduğundan ihmal edildi
+ 45 - 42
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_syn.rpt.html


+ 2 - 2
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_syn_resource.html

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

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

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

+ 3 - 3
src/src/WrapFifoChain/FifoDDS/temp/FIFOHS/FifoDDS_tmp.v

@@ -1,10 +1,10 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Template file for instantiation
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.03 (64-bit)
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
 //Device: GW1N-9
 //Device: GW1N-9
-//Created Time: Tue May 28 15:49:41 2024
+//Created Time: Thu Jun 26 11:09:20 2025
 
 
 //Change the instance name and port connections to the signal names
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 //--------Copy here to design--------

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

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

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

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

+ 218 - 239
src/src/WrapFifoChain/FifoLMX/FifoLMX.v

@@ -1,11 +1,11 @@
 //
 //
 //Written by GowinSynthesis
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.02"
-//Thu Apr 25 16:07:21 2024
+//Tool Version "V1.9.11.02 (64-bit)"
+//Thu Jun 26 10:59:11 2025
 
 
 //Source file index table:
 //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"
+//file0 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect begin_protected
 `pragma protect version="2.3"
 `pragma protect version="2.3"
@@ -17,246 +17,225 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `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_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
 `pragma protect key_block
-CQcsRTWNeKG9A5gO3GdSoNvW9zYr3PmooBz3vJJYrHFkazaqmvxtJGKC4UGygBk8vXE1NIKCzrix
-ts+4g61KOHhd4DYNMOb3HmV2I8s6SwAwCtu3mmY7S4+o5MuyzYTpV9YtKBoZ5ym6957lrUY9d1Be
-l7oLPcGOtiL/0cFFmy2gn3xaI84cJbhlR21C0bH47TYv5uDNGJlHNQKdqgZBDsKL3HQYCIYwveIM
-wqd3+uZjlD1zeWl08Z045RPP/iKAfoW8j34G5ZM1sLye6hjUb1N3OsyAZP+JXOeDgZ+OW1OVwvuI
-Eeo9r6zKZBCzzoX/vEjCCVRH/vbTUoQQ9buY6g==
+jb/odx/M3J8e8kRiR7CVV91CJX8BTh8PdYQ4M38+OHGehJgH1KMDpY+cpGdnH57nam7FSuZ/jq0v
+piZfja8gey2PzONKSjN1YY5U8WIx/SDut1mPRV8GcaWKki2R7RCsPgjWiwIrNHD1GCS9dTQx0c6f
+72Vq5IfQi/X1ycYiP2mLwLY6xzlmLodX2+9PwV/8vlN3OunX58HnMGGIJw2kuAe+lUZF152Ka5yp
+l6ZFwRGuAf1H3J0OgGic/RaTw/yCT49qxlvSJMr60oxwfMIGYDUnRPSjBxgMhgnhkKt/lTHcxx57
+vflXgIPlnA4Fz6U/GJBjaBy+jPW4yirAZG0Xmw==
 
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=13040)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=11840)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
 `pragma protect data_block
-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
+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
 `pragma protect end_protected
 `pragma protect end_protected
 module FifoLMX (
 module FifoLMX (
   Data,
   Data,

+ 116 - 172
src/src/WrapFifoChain/FifoLMX/FifoLMX.vo

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

+ 13 - 13
src/src/WrapFifoChain/FifoLMX/FifoLMX_tmp.v

@@ -1,24 +1,24 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Template file for instantiation
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.02
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
-//Device: GW1N-
-//Created Time: Thu Apr 25 16:07:21 2024
+//Device: GW1N-9
+//Created Time: Thu Jun 26 10:59:11 2025
 
 
 //Change the instance name and port connections to the signal names
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 //--------Copy here to design--------
 
 
 	FifoLMX your_instance_name(
 	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
+		.Data(Data), //input [23:0] Data
+		.Reset(Reset), //input Reset
+		.WrClk(WrClk), //input WrClk
+		.RdClk(RdClk), //input RdClk
+		.WrEn(WrEn), //input WrEn
+		.RdEn(RdEn), //input RdEn
+		.Q(Q), //output [23:0] Q
+		.Empty(Empty), //output Empty
+		.Full(Full) //output Full
 	);
 	);
 
 
 //--------Copy end-------------------
 //--------Copy end-------------------

+ 6 - 4
src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FIFOHS.prj

@@ -4,17 +4,19 @@
     <Version>beta</Version>
     <Version>beta</Version>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <FileList>
     <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"/>
+        <File path="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
     </FileList>
     </FileList>
     <OptionList>
     <OptionList>
         <Option type="disable_insert_pad" value="1"/>
         <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/FifoLMX/temp/FIFOHS"/>
+        <Option type="include_path" value="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data"/>
+        <Option type="include_path" value="C:/Gowin/Projects/SB_TMSG44V1_FPGA/src/src/WrapFifoChain/FifoLMX/temp/FIFOHS"/>
         <Option type="output_file" value="FifoLMX.vg"/>
         <Option type="output_file" value="FifoLMX.vg"/>
         <Option type="output_template" value="FifoLMX_tmp.v"/>
         <Option type="output_template" value="FifoLMX_tmp.v"/>
         <Option type="ram_balance" value="1"/>
         <Option type="ram_balance" value="1"/>
         <Option type="ram_rw_check" value="1"/>
         <Option type="ram_rw_check" value="1"/>
+        <Option type="vcc" value="1.2"/>
+        <Option type="vccx" value="3.3"/>
         <Option type="verilog_language" value="sysv-2017"/>
         <Option type="verilog_language" value="sysv-2017"/>
     </OptionList>
     </OptionList>
 </Project>
 </Project>

+ 32 - 23
src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX.log

@@ -1,19 +1,28 @@
 GowinSynthesis start
 GowinSynthesis start
 Running parser ...
 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)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol 'Reset', assumed default net type 'wire'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol 'RPReset', assumed default net type 'wire'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'FifoLMX'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 NOTE  (EX0101) : Current top module is "FifoLMX"
 NOTE  (EX0101) : Current top module is "FifoLMX"
 [5%] Running netlist conversion ...
 [5%] Running netlist conversion ...
 Running device independent optimization ...
 Running device independent optimization ...
@@ -29,17 +38,17 @@ Running technical mapping ...
 [60%] Tech-Mapping Phase 0 completed
 [60%] Tech-Mapping Phase 0 completed
 [65%] Tech-Mapping Phase 1 completed
 [65%] Tech-Mapping Phase 1 completed
 [75%] Tech-Mapping Phase 2 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  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 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  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 [80%] Tech-Mapping Phase 3 completed
 [80%] Tech-Mapping Phase 3 completed
 [90%] Tech-Mapping Phase 4 completed
 [90%] Tech-Mapping Phase 4 completed
-[95%] Generate netlist file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoLMX\temp\FIFOHS\FifoLMX.vg" completed
-Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoLMX\temp\FIFOHS\FifoLMX_tmp.v" completed
-[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoLMX\temp\FIFOHS\FifoLMX_syn.rpt.html" completed
+[95%] Generate netlist file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoLMX\temp\FIFOHS\FifoLMX.vg" completed
+Generate template file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoLMX\temp\FIFOHS\FifoLMX_tmp.v" completed
+[100%] Generate report file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoLMX\temp\FIFOHS\FifoLMX_syn.rpt.html" completed
 GowinSynthesis finish
 GowinSynthesis finish

+ 218 - 239
src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX.vg

@@ -1,11 +1,11 @@
 //
 //
 //Written by GowinSynthesis
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.02"
-//Thu Apr 25 16:07:21 2024
+//Tool Version "V1.9.11.02 (64-bit)"
+//Thu Jun 26 10:59:11 2025
 
 
 //Source file index table:
 //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"
+//file0 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect begin_protected
 `pragma protect version="2.3"
 `pragma protect version="2.3"
@@ -17,246 +17,225 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `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_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
 `pragma protect key_block
-CQcsRTWNeKG9A5gO3GdSoNvW9zYr3PmooBz3vJJYrHFkazaqmvxtJGKC4UGygBk8vXE1NIKCzrix
-ts+4g61KOHhd4DYNMOb3HmV2I8s6SwAwCtu3mmY7S4+o5MuyzYTpV9YtKBoZ5ym6957lrUY9d1Be
-l7oLPcGOtiL/0cFFmy2gn3xaI84cJbhlR21C0bH47TYv5uDNGJlHNQKdqgZBDsKL3HQYCIYwveIM
-wqd3+uZjlD1zeWl08Z045RPP/iKAfoW8j34G5ZM1sLye6hjUb1N3OsyAZP+JXOeDgZ+OW1OVwvuI
-Eeo9r6zKZBCzzoX/vEjCCVRH/vbTUoQQ9buY6g==
+jb/odx/M3J8e8kRiR7CVV91CJX8BTh8PdYQ4M38+OHGehJgH1KMDpY+cpGdnH57nam7FSuZ/jq0v
+piZfja8gey2PzONKSjN1YY5U8WIx/SDut1mPRV8GcaWKki2R7RCsPgjWiwIrNHD1GCS9dTQx0c6f
+72Vq5IfQi/X1ycYiP2mLwLY6xzlmLodX2+9PwV/8vlN3OunX58HnMGGIJw2kuAe+lUZF152Ka5yp
+l6ZFwRGuAf1H3J0OgGic/RaTw/yCT49qxlvSJMr60oxwfMIGYDUnRPSjBxgMhgnhkKt/lTHcxx57
+vflXgIPlnA4Fz6U/GJBjaBy+jPW4yirAZG0Xmw==
 
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=13040)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=11840)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
 `pragma protect data_block
-RWzA3+GqDhMjh9EF48y3dOgVdOBNi3KyItJH/68DBVhXiRXpoxTCvsApkIbZlrMpqpuCkrZaHSBl
-HRpm1ClbaYB46rRi/AVYu9ZRGwxPbBW5Nu5/E1tS7YAgUJGtahZESrWuC+qmZSbNbuUiJcD3nTMM
-oQBgWVMNGIsV1aAGT5Gnsk7KCoB1PsYFRnlY586heN/DzWrZv+orZICFd2enPGHuuPVACHQBiz8P
-AVmIrd02ES/6Iiy35nH8CQK2DFtD91LIko4vb1GKI/nkagX+TXXXRaIm2ert1DgvjbMSdHEDM0pl
-tkWcSCM/EHEKIntxSmXvODef0DWr7/Rx24dFz2ATsd8iZZzbEqWL4W29AlcmGns5DDlmj/NUoeIh
-d1TXFQ0Wv/fv4hsmpj+efo7QE68RvaIpd2IjQMBCGtHFXO+dc3wejE4P8MnSV+X3ylxee86hkw1M
-XyLrqETCS6bbmZsSylkf//cveMWJujT5XCwR7tv+3WnCxh8CDWTM//Vk1D3peYt8yDEiCC3XH+Lk
-rcKHxgcQ3P43HI1aeIH1SKEg0O7wpKQ0p5cB5uowxpIeC8/w55wNvgyKWkGhXyPqV0DnjjdSEFET
-7GsFzra6qmNkSyEy97Kthanf2LF6VlDDuwpgwuv6pDZbwklmFbyB/vBLpURwSEQmTJhp7ZC+JZCD
-r39phMaW57pU+IvkEKn12YdFvxUHnxsQFdz7Gq1BIzUB2xlLYAtuEy+XCqkrdqtru3acZjjb7iq+
-Ydkx8jWdxTg+wdzeVi7L+7mKwoR/Rd4HZ+JVoPVWEE1zoW/8b8Bqaal9DrDpz3jhLokZKnIEcAOA
-dWkhEvo7+kxzeBJ4g9YsCochS2WC64h2aHnwMvExLWeglVP56hmBlAkwx6kTfdgK3vCgQdj2RV0O
-QXwuNlHR229VQkKEW4jWFVHLN7wt2kDNLMN9n4rCS4xuWTv6h/xjqaDTdjbcKg+llg3tempitwm5
-YonLO0y5HUh8hpFft6xVJLHu3dq61WqQCqPcNWjHK8go7o3+aT/gdVoL56qVsdeudWJTAFReKtfH
-NBWMtosSZMFaISV9qAI+szIMUrJUrH3hXV44jhQ0+wLJSBKPHj/j3KZAP6hzNGRHoUHPsIV0q0xu
-W63+wQTrj3BNwkbVswsDPeUNJyA6gyFSZfoBK2g5MngDKqlLNYUHQ/ALEA5KUiRiKrgEQlryAYfm
-6vj3PDknCytvV6760IZ1ChbQQAYnLaqeJkyPmRI3IJT3uoOwpCj4nScNSdDpg7P27+eoeZLz1SzO
-VU6UwpluZ4gCAyr+u6gSAWqVnNm75gc7lIrG1m7tlaj7+dJ9zT3bI+yBWPmtl7Hy5R+RM1dwQEfX
-29bYfK1E1Z3IjDK96/1a+NEFIKkLsIonA0AYO2JVTPhIKKgHZ3cEewBbtAQC4tDDKVAH3qGUr01S
-JDhMSBPdtvf2JmCXolPFNFrbqsrU+3mLAIrMp1VfnNPTqYx9GIImKYEfgP8zsm60iBbCD2mEHG86
-Wg7N3t7S20m2kgVDhTgpnFQnrWUTRxjE6yiRvdIdGGUlrpX9e7JgskCjW5KFefZF0eI24ZO8X6XH
-QkyXMIfpzKXJM1wSrm4yCu8D070JSTgm9DAb/5OFU73LQvGnDV96bGyk7WGmuO7BzzWUvJ0rRqUJ
-n8PgkNjZAtm83phQb6un9JJ4Rw6lRWf23u32nfsESaG8LFSYtgBfQ10zJRpgfPD6U4F+WZUi/Twu
-Oqw/ugUGF4fMbiSImVKIAHmWV6ILY15E+1038ktj1CNWTVMbs8kKZpCUHOR8PF6TAJN4VFtfJELX
-EGIl1YbUlITCEfONKodZ5DG2Nx9sK0RjerXL11WRlkS1D7IDCMO48cCG1jADnZmE70LICgffAIyb
-q+VfC17iU5fm/aC1wlMlXgRB/lH3sCH+FiCDJJSAtZgdlSW9L7tO8LcwSd2t8JNWmIcUMctbPKYj
-RCS35tJzY3EN72XJMza2tj6mjycdErNqZ/SHrfwL5vvSdufiyAdZuhqNpKK2iyB77Smuh5iQTk/y
-+WhTqvOSP8rwn/4Uzij03SfcnaLNXQl8ACtRfZyh9E5323VcH1ETzpoe1A3TR0udC6Yx1ZKHfbuc
-CfN0XgKiG96aEZiQ7f8u2Q+FGtZ0DhFrpU7uiz+9lh494xxAAa6w6yK82cBIGPwHEJtcRN7CbLo3
-iJo5BRGLcO2hH2Nj6WQ6kSHkBKYuQ4ABjlWbDE7KFGyGhm8krYlpjg2esmRijtDjT6GiYhD14wKR
-rpr5UpJTZQZ/H18cqdRHUMrubtIa8KIIW1nhi/D9X1l36gPTxLk1z9mhd5YTqirCaLeF6YrJ2IBI
-Jl3Lm2fc+mFZSZnx5aR9atWqLOh8ndRZnGTgfIfu8Qfa1rOkJN3xS6QO3Mkmr9jXSS79voYyy9a/
-Y6IWwk1jHbQp/BIPMVHeCQ8DcAPQehyh2YFo+0QgsjYWT6cgfiVawxYm7ZzZVGyLblabrF8m32c1
-mTyk5CcSH82vhTL3XC1AbDFCMO38dw/jW1r1m+hpE85fFbjHxqRB1eFoaB7wXwg85aGxRRCwYrSG
-TAcaZ77EW77sZZl7DOe6hH1zAPYoFPQdBiiBHDKQWi1pO0vkrH47zoKiq5oZiKte7PLkBtBAhKXe
-t+64OE7of8AI2YTwCStMlx2z7G2JGC7kUirXipu0lYTJzYhCmHfm5mDN2FhZJyOVuqBQ34Hgla8a
-iKK6B9yFbm4cd/e80QTrhoYln2yVb4pWWZcH5nuKQlaYFKDoQfIfqdz/7+PGFB65TkMfpRfYB310
-ZHPO/KMfHgi9LS00dUIS0MWQaviVBBpmRbtakCTHkf1PPaHSgS+F7IRGxV88sd0V+W7L4vqMF24K
-R1uGN+mRRxceqghTNSndjo8rtTpkhWFzFSarBd6UFanFgpHyOKlSWwtuJpNqT1ODZQegmC8VsEbl
-4P3x+EIPyI9+TM8mrImdq+JwhVFO6s2SicNu7Kphn6kETPmZ4Stf6lloYwhgDyfs3SHdIPtZRhh1
-TCo2J0mx2RD4vVv0ONDV57BAN9YWqyjO5HrSfSRt9Mcjwsv7DsmigkwtAuuOhGeZ/qmc8avtbQuH
-hIHIak99+fz/aM/iYmlEwa4/SEzWqb6iHW7Fi+6YAEJkJ0/5dSFSz/sxb5NE1L1dGDSA2/8XWab3
-94VISwnE+K5/dv2KH2jlzSbIydCfEZoUWP/c5rAyhQg4bQ5We3MoISWqh3HSOEcjazoiN5dkZPtB
-EQS++6wBTZOkqdjFqJIqn7L6S94ypzY88unb7ZfsMFxs4Dr4/NfRfYMQso97kf2Nmhgd22KneA/p
-yNuaykc+RSeQiMpwCHtdWVFuzhLfucgULxAmsGb1yka+tMa5uKSaQ5ioBl3HFFhysh8SRGDbvMlz
-6CibRpXgNxmtpnc1S3vIBEemBP2zPF8cTrYxmch9s+ATOoEMdieTfySE8863ActjLcmhEjZN/YTH
-jn2juiO7JxP3bjYhinbW8DlQ5oH5ZfT8IvrCoFxmfGFkaMis2/Dm/mSiVxV3P586fzSi8vKii/Sh
-t1EQvsO/e7zppHduV379yLXo6hjbmpKGtPDYpvIZvq4c9wsJCc2j/mMup9isHzeYMVfOjB/e12mN
-y/aR4KiwZ0v/RpwTWEIicKVo8YLzma1Z9TNFEVA+pUwRZmoN0PeJ77QD2OtwD+R7agINoDsk6rtX
-D7ZrqwiBwszQaCMVAcqJBChidZKRk0ilLTVcv/HPf98dPKfbWR0gvS4fnrgYcWxTCfLDrJj2qfKl
-x8R62Jx+9m312Puy3IeCQ70T6CaDKZ4nOxuB5I02MZ2ALaxRcadS0JklRWVYeo5TKbw8o+2l0ViF
-PtNWthmllY1ZKlN+vrdX/ngL8/2Q9Z4/Kthln/Pjt4S56VoQrjEebkpWuwFMh06N6UP7UGzZT8FX
-XfbP98Myh8dFE8HENosfgHR8Y0CL1nebwJCCtrHkLbFgX8BwUVSpNVfOWtSlu9rC8d8MWegyvcND
-QCd5JZJC2Al4oAgCpM0+/zY6p4Ms/GdtGUtLDhwXf7ppLCRrdCH2Vmb+MJHrj5uTFGEFBNJsXhPJ
-4223q7n/Rahx1AQZVwrOgPeTP7SbzWhQisBpG8v9wQXbCJgkONpn0zwOVJfWA1s9SB5+OuS4ht02
-8RNn3j2yoaOoI/j/x6LdAlBZ/NU2nZkPQ/KSqxdFyj1Z4hVlxSHrsY6zbErWNtRxYOGyNyGwIAEP
-UROKN5RiEjakW1MdjuG+X+D+AFIO6MRATaTwgS8K9xcCEFDKPp7iqdcSvWjmUyqn0TVECoWT3uM6
-MtMoQ8sVyaWNzoG9XSOTwCdUkar6205bwaOKugwW9jp6aXDjXKmfp5hy+0P5lWD8hPKgXTy4/7jK
-ubmzB9ExIBrv0RziBHLOUFj8A9FbKdVtD46iArMoO//CdbPfQXBQf6JAL+I9zomrnr9X1Tahaw7f
-SHmGl/ecLNBNrpTBI3wXB6TdOLs0W67QTkl13gQ82uI4vl2G9l8mTn4TJIFQaFx8tEbJdcPVbE8H
-RsyEZMoKKwuFg5PXfhi3iR2maRBMub2oWDrlKk/G3MnDXMbPlEX4VfErZZ/fCOJY+yIhegA68Ymc
-2JzZVZEh6iFlRgKtBMQfOuk9u9F8kFUo9AnOEIZFZu8zI/sLUsbuCIvhjbV7KDTLTqNdfQbPE78o
-OYdSXbYsorXs0U4HEQpFQUmApHPb4EPt9i0zPKie9ORJoD26WqpbTTkegt9nfeQ8yNVVZ/59m08O
-TVjVAp8doAuuF1/3OMjkFmKu5TOijMkr6k0uZNkdi74I4BnHFWWA7renGEw/q3P89INEhFAat9NT
-8yZPL2ZKoKCBrwrpbrtGloM1HeUcQ9M/Kkro3IDM6rGGqmBbW9NuiSPBA2o5xwxBNNQHmBbUIoYL
-WkTLv9wsiS8nLcK2U4yYZw4LRZQU8rJrYXlOytL1D9zswSHlc+5EGwnkyvpIISXwxQ/VSp9s4p/c
-SpWpMyA+tORjo6Tbcr3UBuEm9t942KONeR8vcTYrdtVld7cp2HnFsShsLuh2s+nIG21naI1/xZn2
-LH5HQSP7Jg/jRYrW5Nn89qP3Wgj6dwpQ4Q3l1i0zCsX0ZpbOSk3CGSoN2DrgRAQ5PGvpZuE24m55
-N1JiIIiPpFwx13YDos2ySgDXyNAMSzGVjmaVQz6+FsRmio1RSnEy18SqCrdMJ1jxYG9QJnJK50QC
-ygcyYels5fQy/D68u+wc53pO4b6xJYExFgwxvdYbHyN1NJsm9bzeUZueCsMOW2d0LgCVeW5E0I7y
-9RV5fO6AywsPMR4oWr8er55lkXbqHSBVsAjxexgcts+CPpyaFNwz29CI91BoaNx+tiUJUSjmnKug
-pY4AGSHJ6Y3vJ3JLx5Z9hWk4rqPj7lTcEPDVJ+6Rizu3JkrC7bUENJvqn4j6MQBzxAUDBRWGVRGp
-E2nM9Vmv64qb5emoPOnXpVl8n/bOjvmq6TJQIQAwCJq6OXQ8fcu/pCbVHQY4qzz47kG3qN9A8naV
-lVncAcgtGKn2Tw6aeCy/CKGLlg/Yj/BXtY1RkYN+LiGMrKCxnaqWjg13wCjwsa2klWoH7k+Aojx6
-afq+e0RBLBMgGQvBhrtiNa87MjLIJ1Vnvy8k0E580QFhD3NJVUvhkVos/sgVdNejmnnTcIpZH4JB
-7pMwiEislVF7Q88mY+YY7VkyCusi2EoRgsZNrBLAIKq8SJaE7ToQJFBm5XdlyKCXWEuWMZjT+Tec
-o3SF4VeNkY3+WupcH+Ud/AtRmOTlVIpc/WwoWRMIov8p/02Jnfz9UwsQS6cvzQN91n7xuM1RIU9O
-WVAXzsLOFIBu42GG0e24B/Fs9BtSLn6m9liRBw92MNnoeYyyoXG+B1QE4qF7AGLb720xVW8OOekI
-jrPNN6lWlV0YlBIptEBArpQ98E0lSXmVMHTrGm+BX9MCF3fAjqYWf6az9KY8yBxqxsszvGrAFgYZ
-kqIn7wMI8ww5pAHnBPk4PyTwlGZRChwZgSqNNhIObSfsmGkN3ajXrGHXhQJb47NRLmryXCpyv9Yo
-u/FYhxZLUnum25Tkn27Gv6B5CvI0Gm5cJm49jW2eLKAggYH/fGAbJJpPUZ4sssHsPG10aQubyaKa
-SCgZQtGM5Dcb6vRcDjp/TIQndEyE+y3N1e7se2T9nX3AxwWXXPpNabU5flcE2lVFJ31ArTuY9Jb4
-BKZNtOpIiY61O/sCmqje+746PGVFFiLA//H6wCuB0Yub9pvPmB1T1h7485W3CjcWOXZeOJzaCZMe
-c1mXbu6E3mnKWv9kE7e5SY1mopilL1hwUsrSeOwOTgoi7+osMp8xXgknhox+cj/Ydgfy268EGh6g
-p0pOB17eyxbPDPAX5GFlvs1ax+h37j2KFqK0oVHJqQN03wiw6blWDT5ZGb010rLsnAD2XcP5ZkIB
-PwlRUm9YDh42motYqzPFldHyH1ayAKeBwlds3STCR5hLxgizS3n6iiCCwPMveeh2fHNd/tjqRiTQ
-Y0UO4NqsY1tNn5YXqFmXnBSLDDlWOl9FHLeHd+Fq5dqZUU9kgXg45MSGWCptR5bLlcSFClqsOc49
-NsvMD/ZARAuiOeHbigw+018x5PIq2V1lA9GQOvukNddXFpA1hFsOH6VedDz/oG78hjC9jbv3lx+d
-0aoAtNTLXthVb6NF5ibYf0mZ5djHuly0b8KWU3qRZJGoT8b6MYHpFz8lD5xjzDf9SlRhneufwEJ3
-+XKpZs69SfIwqRleZKbIkkkSeN+Qs9QPxk8u8etser1aO+v5kP36fxh39GBP8oZFgANnPJbyJMlJ
-5I34K+cagEfYPSuGASiMMrZtQSG9tW5BzqZZQf2DJgvUDgyz+LESNs1513hsj7rfAPfi3YuwjvZJ
-hVNDViIsxuwZn0N2XVVhyCiMlqdQMkIaVP8+8RvbDvqO6G9jG/HCWO+FBH9bn9h2weA4O61B7KAL
-LlHZcN69uvKKwaf+OlQ5cISKpfoeZ6AEaJz5uQGujEgoB3pou304uYAg25OZCHEutG7NRMUD65nB
-T72ZMA6EF9OaJOd49V8BhuRrn9g3XFe7tD6uosdFFs+bcjDhFDd1yARHkJFpgus8pJmjUxpUMfy4
-87meC0xNyYF0TD6Vf0f4XC87ZhVjsETTgdY517jq5I+WrPFWt/gCsJcp4CxnanFIe7TJME+ZlnvY
-jlSjT2DNdCW8jy1jxcuu7k8Yi6G5N7jIoXSPbyp8L/fNnrWxPI8HvocUJFG5TLE2bkLH0DLGJN0W
-LZQ4fHqq2+85xqYCF5+erHOip+ERZPKniIt8wtwFpP+K7oljuMnvZaebXOOfXZswXZ9wULQqa0dv
-EY28hykf4/wf84UY9rVpAp+yYxXtUZIJAvHm2GUNe8XNBgPahGzrjpEZePY22Jhx8++OJ2Vd//U7
-GxB82f56wT1+6ikBvY7ADKZkKP03vy2bd2WXzlgCG4ZkeJ4i223dNm3WsI/32vbNya2iChEBjMvA
-SkybDF5VaLskvmpxGGurFvMN/E/bDOqM8E0m+S+QVuKLU3iN/d0mXfMu6EjaulKgZ4Seltc3pv5Y
-LslTd0SjAyAAswnng64LyT/pM3qSugzDzjXEtwMyNp/DSdlrmqQ54VOWOYMCAIBHz6BhufeT/o4w
-f88m+hdcUqFuwQHy+n8OAd3466UCfjLETKZSgzebhnXAriDyrp2g3u136pLTV24tpOQyVqNm4Q8Z
-00AmopVeNKtQ6PWQl8KY4+FhxsoXrvZO2m/vMGt3WHzx3o8ETGy+Etzufd1thirfnsy9BJYoeNmF
-5Qv1f79nrkyWOk/2qdloGyooMz1Ckdp9wgsgLBaaSZt8EGyVxYBIS5UfxOlRfJZxhBKb8Egl4vVU
-O9WwM7yryByOlvEm9cJmytrNPiScdyrrm5zR4s2yvnO3rh63Bx/w4MmNZw+zArg8Kyl7ZYKXzYqx
-78SMWsQ9V4N4fjhn49XZ6q4Y0/u5JcrxiFI5ZEuSQu+ADKsHew/LYUFNZoIDC5tLR7PKdpTXh6As
-Ni+aNNhmjop2FDJuO1ma1V0f+Wrcp3fTJLR9Qa9DeGA/2cnIf6trbRbnC9kyt67BDSBQ3SWjUFm1
-MJjMEwTz25+NjYGK3dPouy+dw10cC4GKIOzzdO0pWaxTyVS5Rm3R/BjYo/bxZXRv5WS926zGOTx9
-R1QXPH71Ix3TvC4ktH/HS95tEBETDglVZ+//sKU1zL/Stt+jV204MzM3HezCXth47vO2VNAxnL30
-Gq/DSuDWNSYr/n5s6deHq0scu+XC7Xe1RQyEknk6PJJBF+uxxv+q1K6E6atBFetqXoQNwRvp0oxA
-VSDHcVuF8vZqI9wEqkSKxtLEXSAi8dnGEcIv7EC2J/GmR8N3l1FR8WyL3xQqpXmqQvm74h/k0Gan
-CvBeEykpdzKFC4Q12vpyVh/XHxQ5M1cqC9VStEqgsJfn3ryggJmODar10/ZaogHskD10Ve3MAf+y
-BYQEyL0YxsrPsUgW+/C3tbOV/pHlAAExqQ8wX2M2icGhWppuBnvi49aNXaitUUrLvEJ2nkcCxvLV
-7c8dvmGvdWeC0HKyBjaGO38qyWnpwjR8NBLdFxjNKJsEb88ELKqAoaIHTd9mOhKe341VC/ZeQkr8
-/bmtPs3qiIi8BsuBsALPQmFPS4xavQwUbWO/qzYCzVbdXQf7IdVzc01wlgT5bc5lo5+goRyvfvnE
-EfAGLMWFb77zTu5QOojbGHwBFobacaJa9hiy5ET3VDnQdEuereo6wrtJsvrPRU7Y2p6wgMQopPxS
-Otjbo6oInxikeZIzchPQBEr7cxbbCbaSsaO6+tH6jlCsLQNNFiXcxtwN6n1R3w77iJOCjXBz5WeT
-OmHwmlIZX9ssuiwBUzy9yNPZDd+2BMKbP4nIYYy8X28KMxx7ato/vnJ+/mJMj/Oc/q6XAgS7D6dM
-Km6anu6mVbDiMHKgEL3d8lgW/SPcBxxYBCR7vnS+FGMmg7zQazCNnkbV+KhlJkAS27uG8ORzHJab
-WmRQcnoFO1e0cy5quv3FCXr+RImsEmPaiEBc27L/SXmyThb7ayGEAC5qkB1BVEa0FgA6ZIF5n81y
-2TT5dPnkZ2KoC0theqP+NALBBBNrfAXphzQeXqPNXq0IXNPh1p3wXsRO5GskT0ovLm17FwA2NmBj
-m92gdDGuaobhNfsyUtbjDi52S4PnXlU7yKHZQ9FJWJfNKqECynsae4k35LYMLEYN9XL+tPrPNL4T
-tTmjpZDuRujwXLhvn791oHfqfoRF7MvHFW73GvFzolCraSi7uCSROF3lMfXX1Ewx+FBcGA/q8y/2
-tc0pFGQ/I3+nq/eacVuB3vTrGDwYY+zPekj93vBJxRV1BpB/Ssj8EqBn7/jGCP8hNjl4CpR8BLIs
-P8+kk6iJhIUhDRcwq9LLFFogmmTRGZtoe/xhY/emqYxS9T5N4e327Kkt0++VIFS/3I5S4yON6xhU
-RnlHQA3Ang7AgtGZ/75WWKh5s2OXkgdht0mvedvczsTsTAZisjpUWdNeuBptc46OPtHO4p3UV8vV
-L5Pb80LVaSytGbja01evMx4eIMvTtUaKmeTW7UhGdNr2DHoAqiurwbkBCYj+LIyRr1rO7mFG28kK
-YxXhRoDGkLN8Z6T+hnhlUSWQODlfRwKKn8VE2iMkBsdfdBjUsH7rA1YJVk8Ro/D01MGm/FqY8uum
-Lzw/xiXv+7Tef6NnJ6chuLH2Ew23dwME+p1wIx0cF6DoYcwoIBQlPJqalO+ubwMf8rViu88Gan6s
-+do6hJRTSXgY1RdydMojIsyRM2TjAZ2OVoKU7GTLqiGrE5qOXDx3oUdiF3SzSWpnVOe8v/ElKInZ
-IIvSC7z5zP4AcBLSmhFn/v1ltOLp0br3XPVS9+XyrSwj3jO+SYe84XqnDeb94fQVxDfO626ElP4b
-x66a+ajn6pG/9GRDMIWXSN96I4UIUEI4WVuEqHfFODFiilFvuZ/1T0hbb3Sst1K7g2aRrUZsb17x
-vjZb0uHljkqdD7Qf2mkqFtBSf7yqqr5lYMYK39EyrTMCXRh9tXC+MA8ce7o8XZRzGNXRdx8J9oom
-D45Gn9gW5TfC0SrbAJzlrUzdv+Bz91tMAM+0g7TD+NO8CVyhd1rq45L70jFf/zNJ9eZpYLaft9Ia
-KGjDRRhQK9PldxKU94kIFazgSNR3oI1wGQXPymlkIFAFH11vSL6mvSOj4DGF9LYYdJ7kua0cgZeV
-ukUIbm1061qwuCo1+x4ZkCciN8BBq9+ZybH9kIryYuuqvpdTPEV1NOB4bFIQ67wgIKBZ+uvH/Euy
-TnzVTM+xE0Ev3kpGbiygGex8jeNm6soh4AO9QZP51sHLPjiY8hk2tpDB1+KR6iPTfQzJUELVQdCO
-uIhNy91pUP5BtCA6b6LvKUjq19apz05qf6hxO0tp+SDaHpHE2ET7/Y9teRaI1WctglKLtJ171vpn
-fKFNAOix+jlXqCU/mG1QX6EeKDh/4bx67Z1mGBjEVt9sNOmZicmop+ZLEr6BUILhKqvukrtiCeQo
-wNeZ58MGb7RvC/LlCs9malxaW2GPztbZtHHXKCENJSv7T9co6Vwh66xyIgjwFbWBIoitRZaUaNXP
-I3vEWeBASuKBpxo/2xdla5kjGWXBb7oaTkjbV2AtLXVB+vbHPvJau/5qsUJYkH4CWQTqbMAZGMEO
-q5mt6nE9P5RejCnAhSxFFmlpKORwFQVMeCGsY3q2Dsb6pNqiHO37fIqxPo1ChjwOhqsUcvrkCMf0
-++/pi6ucDywEQ2XMhb9F2Ah2f5bqTfAxEe/Tk7YxrXQKSfM31Mh/R2QDv5jO/n3O1bx/lF92YiXu
-2JjPY93uM6s7NW6qNyKgNbGYel5ZAsj7U0DWAlZrVdU7kFbX1+BIpQG2vFjLjaVV5m/oBkha0pXt
-vNrbTm1b1rbEG2ExIV/45zBsVTDiC3To/YX7hlABCu+J3X+rMIYu8fCspHm7MT9rOXKZTVXmRNRf
-css+p85rYaBvGi0qr9mQqsa6XWgNLqY3eIj0sV/h0cKRiQElv1biqsCmA8SnCDq/5Y57A+K053uI
-0zwTMmlUcOBZma1TOXvEZnHpysME3nu8OjzJWX5PGY9doWq5ayiv/5u9W9vVT6zMnkskAawyziAp
-WkW97ORqVuS/lM0TMqOjqAfyeXjPPzXhT9hAFWksVFZ6iBSlQHUMNuuq0X4CMle/jDq+Qy/GU+Iy
-zPMzWOJO8cbl90qkLklmf56k+v6L12Lp0ZmO678xw6LO2BLwR7ic0cB8oRsAu72CiVIQqtWTmhTB
-vKJZBw4deuvTSFk4o3TdAbSGVxZTmna82UpWL6wK4FWW/7gPk+Z8TAka3zYbCU8cnUSXQkqYQWjK
-pi1+ZCPrHplLvV61BnCmgtVv2clb6gUzQzd5vanWTSrt//Iq2Wldrq1/mqpCKOsDYS9s2I2ARPA2
-QblqIIC7/qn9q2gmx8ywWms3C6xNXapdEZTBj77RX0tMlueuBpj6XM1iz6l5Ip4OTPxq3eXhXN2+
-YwEYx6sm9+5ILBMKfi+wjqKTESt+FuWsHRKNslSvhHaniTjcIqpohvrX+WnyTPPbL/L3uVEKO1pd
-nYiKCIgTbWlJSbfAoYP8B4A7BdNdZDZSMC1ZNK2EPeF+yHvgQw2ZXf8cBwA0OYSpmFSVm6VO4YbN
-oLIwWVqcZ2AQbhPLsrtj7k88q5P/pezzvjuJ023X88AuUbWDcRUvz2lBqWLFQyqSR0w/NEbkOT7F
-A166AB5qnpeNwkDFB5gRZbrTjEV4jnPQUzY95PYoM8DH8yild7TQAKHPfK8q15G11cRL5fCEq6CW
-qvxA1/pN2WMJkIgOHASTHyslpKa9jbdDcg4ACUeo0W/FB4jXf0tBYWzrA8/+1ZuBIG8HeweQjff/
-W22rk6syFrj9fUnPcUJf883q1/dYSFqn1acSXaOvLR1YC4pQQWSvUjOdPsPAUo1YXSpNRM9Mlbfk
-T9asZgx63yKUYIpXjNAalII8pwTLjkC0WZLDtXAlVesfVXGlL0sNt/dwW9OEivNUMa2Hw1aW5TEB
-c7NQRRf38XFp51HTPKTGXydJIL9Ojs0usiPtJozwO/NWpYY+IZCROfoD6o7ejnGocrqpqmeCq5XG
-jCjkl/IcN5ZtdAWtjv2FZ+3zr2tQg+rm4oZF1vfVE8QSTRsf3mV4q1/MNxXb7Hq7+YzHjNi1SRuB
-XW4Wt1tc2+lLLc956wJkFhD8prMUkcGHdWmQ+30morQIqfh4DiwrFb9nKfz6MaQTeHOUaiPr/EIE
-JgsuDm1tdU40Oa1K3i2QA02l+xmqd2zYv7ZO97dkq6Qv1ED7S1lyfD97W+Rw7dOW4oO6Ggoi/d+u
-fjGaSfKsM0uOkse63W8U27B3XIEi/AHEp41NBN2vm93U5RIXsgePE/qcTAe7UTRQqF9FiRRT7oPR
-8ZwDVjPep8Le6BA6g1PBbAe8BY9eW6hHPjYUyTaX3lhKs6JiEjmZv3k4MjlT/ov7oXHQQH2X6En8
-I3iE8SknU8V3xdEb5HLnrbCV98LDTiDuu2irA3YeLGyPGmXxccz9LobXeIw7uL9UECrRSuw3KS9T
-ZPKIvMGLe2sxtIbT877+JhcCleElgxTf3qbrxpyptvrKh3rue5t2qnBJK3cst9UxXN2fM4Qm5rMm
-gpocR/IASOB5RjCmm30/u8A51rRs/SfLeNip0qX5m9p6hka7XGJtBXPwbBkR2EH/AXxA6U+Qt5Gk
-DmKHIerHije7y90EWbjfDA5t7dJ7D3GByG/6Sr4s0iizbFrltWxdSXcnflMgZwobcV0aOoeKII8v
-HVmyzR307RpwRL5NZh5UmloXFhGzKdfbcuzncD+llKIR3KcuTATXpArnuFkJzdp6V9zXNI2c6/6a
-bwf6B8r/JPpUF4Y0bVCIF5VVU5Knks2elpkJ8D0Ljuvx4rpFroqvBKp9FIQqXi6nU9I9B9pNihtv
-8HL9WV4YSXmcMIiBupg6x/9iW0/y3uNzgtjjWVFDusEVnXyohSzny7ad7CUAVpFa4W3bHgvebEdO
-BWgKAz62EmaJcSV+Vs9jYiZ3htjRaLRvGVotnrJRfMWdNWB6psq5qzJSdfJwl6p/Lp9bRgECcaFD
-bggTDCfO+Ml/ZhAH5hGuUbZaTDZm87gXQLWJY5GBzTEPXzdy50/7DvQ7L1YVanZR6c2olMUfgBGm
-kKKmSsZ4BQH7K5tUWQQlmUp74g0CjO2prsPnmnc6E4P4elfSQTWxkZQK1SO253RbY6pMNT7ZoijX
-vsikb47VvdHNNAzl2ue8Ccxt/Fg777sPdKh0wBgrRvGkd6eOEuxRXcciN5mTuY98QdmKD7qnMx8Y
-YW1liAdNJJmLJbdkkUsf//rPs5VfPauhhZUd1XcGzj1aj+G7QJDOJsaxMvaWop3GPdzvTICmAzca
-GeYex4Fs2J8rzg0DqhPriOfpV8C/w3KB4o4bzbcoX03ErXl3pNPTYWuOEfVed46MDyNavK3Zir/k
-im8QH2duqlI2iUij84fypo0y0kXoPSdKwG62w1dI0agR5/OadhP9a1smwbR6Bi7rurwVlTjHogaP
-a6d2R92Cu4j3RC8AxYJzaWzyH7wDEVU2h3UlZbXUyudnpPntFif9mg6kuangyD17AXlqgoz3poj3
-DVWylTRbO0Vp7eSYB43pZcIHoSMKwQ147BAqJKD+UJRGettRBocJ2FWzJEu/wOkM1C+KLfbsVYlw
-+0dw0I6nLZvUpDdZRG0Imahq46puRU+Ht5yNKCV+YVjg9sygjOhBAjtBznrpqPzV5+0MZWWSGItx
-6fDmhbWyI7wlhTYDi0l3fuQVkk0yxvq9XzQUA5x91w7whpSKdw3hCuqlI5LhAePAmTS4kI/ifLEl
-wc2ULWJPmGw3X3D+11QTVIVvG1emRlLOreRIOQtjcujWsLwPhGXkDSTetPsfxqL/jhiHPTlwptrs
-DueNKODynECFHL4P4xSBCM/Jc4v/MAqMOoCU1PpOD/VMQ+aFL33RYXnA7hhCeVfm9lvEu3AFJKXM
-qT79qDb8e7PLtTw2gwS9yVmiFd5a9zHRFONC4rJ6P43I339Dh5ulR8W1/iRXCJSK4vx6AObvRD7y
-xc/Ubh1jnZ38+N+Rbq7At2TQ1du3J4nlBC7zuYwK7jEDmIrncQJ1rQKRZ4hb6Q3J0vDMgW2CHJ2J
-VGsY5yl4iJO8SQfaQSXHGqpv1GKEsvYocItK0fQsSGjA61E105YtaSquWd/WjqiXMzf/wqTdXPuE
-SWO+7GNfTPDB65rtrKcv/Bfiyjl0HQak3ZYVV2hfrFaYPn/Gz/+uMniyfB0KAXz42oRXXiTpSOYJ
-WmTrtehTYjCYp2yU7K/3wicTjZI7zVF6Rz5o8kLCeFdZB3xI7sXMXv1t4YooF8Siu+sx8bktCrxL
-mAqrKZCGe50PjIqIdjvmpzznBXyX6po88kGC/UKU6jYllThg5HiHV2VwevOHjrwgkLCGPFibrRHE
-kUz8ELKYb739m0+pzwCdXIluP7Nn4DggOVp0DH8ArHAV4Mw0nXsTH48itvVb+No0GQHtjavuJTXy
-fngZkx7q1hJnDS2JSwB2rVkY3Rz/QxHm2PICdfMRmthenGPYiNNqlXDJrWVNge9/KXpHswktZW5q
-2aHMBWjw+Z7G1R5Dnvju5AdOYqHqCiU6lYl7cbr8LEZa41/GafsV563ji0Jwo8bN2215beKwRKmM
-GzMDznZJx+KgUUF5rej/Lb5ljNKxatf1cFyU4Rfy0bZ4UCP7srRX2BibgXVEL0rceASYXU9I2KlR
-EF6Jrgo63c+KF/G4kZLsmF6WNYJFY8PCVMUhPF4n5R2HPxWm/cV5BeILpeTir7UDRFQjZSTL9iyW
-356YS0jwJL8IJjht9Lem1rX07g4YFWMS4EyrofGZWAD8PD9N3GEajlCvAJmhwFf23p37Ih2vCDSk
-KN+MjBMGVza11j9uCcPEDCQ8v1Zras0GbMRsrEUwBaUovvOuuio8bQrOFQ4JqoO9f342yUcbYFLP
-GqG2TMApa9P4dIiz0D2IYZCYVcxKJ/h+tA7i7p4+qOtwObcHlJANdT3CEBbdgigIFGuydMQ3YLli
-6cjFXYamAU755c4jrhsLbiXzi5aq+etQHwE4K5ETVQGRfKDcS8PMKVZI5ntLBTC3+0TpPPLlam+Q
-b07O1jXg9UUZOMdoaCvdNj8H4E0KWAVdzbAIWkfFtUo5fopK2fbgQUkyp4I33LbDiMoclzHsOut7
-jRop8rN4rXiaORFRWAnlcnL28lKMLc7ucIONBDRkKU1eU93oxUfepXfWpbDBzYSOx4G/YCwiNHwz
-eSfPU5ddnA+oZtK/Uww0OmhtxLsDDSpbjvQEYFTZ6wV7I9b327HAQf1dhMZRrOKZmgX3fTQGNFFa
-c3s6F8f3WNLFURHQGQ+7P3WFvlbnnHiz42cY1tAFbjOqc9K2lHia9Ew9kCxYoymPuRbY0G9vVRYJ
-+71EMTfl4uZRJa9t1tWilo/t/vwLjFfttEqbmhZBrN/mJIJJU9wrHH2oXV7AXDO+jGwnJemwG+SB
-JiGDUg+/J8OjXBA2IJEhH36VGjzkTOQRjl5b5uYRKBKvoiqNi3V5WEVsbUtkkxxMwcbIp6BCxmou
-/JOp3p1OvojtdRH8/z7ngVjF/8mdPrIKJ6HLEl/Ri3q7k1PGs2SqxTJyPAmtCrQB+sbtECzwU0Bh
-FwtArLNTDFtkGeSTAmYQrV+CSGCcqhZo9zPUpAlF035nl8V3ZdLa/GCr7XSR0kJh4vbgQgmPTh43
-MTzkvRAy4ozenyopgGAKOimcBrBJmk5NQqzjX96p1zlbrRORyv/r+Sex+8KOVv/56IeIJeZ4C2xL
-GouPQjKe0x6tVxqd+u4WskrwFlHznAqx7puC207nkn74GQ9vvtaOAD8cvFxqHzZ+rPZvU33QX+Z8
-KSylPsgXlWJrkLnS2jW7tvKiYlAb4Hhcc0MZIA9LO5+yZwcJq11HLUr9fMAV0O5Pg6rWycTEUAcl
-WOW/IjXr1NeHYeyMDUsTQjno8EWldHCmSXPv5MJ3j3TsgBCl0kZHaDKynShOzuP49P86AtxHuba7
-+nXXczX6zfGI36zBdiDs6byaTaVquXL9vblEnT2XbK1K6KYU5Xj30HFDo3h1aMpEJh/+nxs4Xfzg
-VhJHA+4nzOR00edUAEiEVjO9SkEj7+8XUqux0l4VLfacfPUTrdG0vg9s6Z6LOXCPtHDmtP0+tx5M
-aGmonkZ63HX8c50RU4jYEKfxvOzzb8mux4QY0C7N+GaPx3RSeHn9RVQdemMamn9hU52HXc32vjw/
-W+e+FfteBMFbQggzCSmBUGHc1Z2G0XEL6HbIeNY8VkemJJA6KWiGyw4im8ppu8c7c5PHPCcb8kB5
-BLB7+KRTGYzqkC0IOsSBAjCndVi0C4P1wwzPWSXeFPQQZVyzgNk2eWWEpyFNHmBXum84li4Ge9j9
-ZRIy75kbDGY4KHFhhDZIM/eH8nhwfHaz/lfi+33it0AwRrkqCYKqnCPFsL18iA9IxtIHC0NDrrLL
-qbI2xjVYvy9z4mlqiTZZyWgvhthkr3U5Jbirq4xKF2Tqhykir30yTMrAFH+mjp032UttUET8eAQ+
-xlZiRbYnaN7FijJL7OUECl+gXyTmZnHYH334mQy/1oXcEmxkr2Clevx7WL4DHTYGWaBOfqlYdbif
-oM48YoiGagnM/QWtHwhqQahF7TqY6FYDrHL7sXEctRbcpJmTOVFeZntiRncmww6o7DcdglJhwqSl
-ogbdgKUXDVw/Z+7P6GWhEYR7yQn8SFht2rc+i5wKWg/K+tX58RLbPy4I+YsNqvpAwOFj9WrJKW/D
-oLuFKvaBFGDADho+f8fSY7837k7LWt3wi2lVdR1iejGKtWgybWi7CbFpH+Fp87NsbG91CtGic+4A
-EXd83jBeWvbk55eFRm80SkJ4dqoLSl30ItywhuCrrMf4zrg66YBmnb16YeAFMg5H9xPsYv4KbCj1
-8n2Xh3VRXAsX2DrHAlX2IUBcWo/5XakxfoQc9eFmlTb4qV1hoy7ULqGGpC3aYuaIGwYTRNRtfnHu
-fE2mWxxj9PmX5Qcl9OdhxCZ2DJbed0laXB8c1XzMSg6T8YoKfjWbs833gAKBMD+RE7w+jNkCViMa
-Ma0UjLnXYZmM+bnkD/hCN4ywK6elPO8a3NOcsiEQ3GSwUcHLHHUxBiqF5d99vW0IawRql2TCVg57
-q/XXMLeLrCI0Hg+LRZ/8rzgf/5zWVk6yH+9H3hJfTp05IlIKD3veO0H35ZzsCTRFmHIxviXerOGl
-iquJKrJAOuQAmJm6Dbw/7b7Bf5o03PviM2gY4OBRgfCcMxEADJT1Tcslq6E=
+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
 `pragma protect end_protected
 `pragma protect end_protected
 module FifoLMX (
 module FifoLMX (
   Data,
   Data,

Dosya farkı çok büyük olduğundan ihmal edildi
+ 36 - 33
src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX_syn.rpt.html


+ 3 - 3
src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX_syn_resource.html

@@ -30,10 +30,10 @@ table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-co
 <th class="label">ROM16 NUMBER</th>
 <th class="label">ROM16 NUMBER</th>
 </tr>
 </tr>
 <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">37</td>
+<td class="label">FifoLMX (C:/Gowin/Gowin_V1.9.11.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">4</td>
-<td align = "center">38</td>
+<td align = "center">39</td>
 <td align = "center">-</td>
 <td align = "center">-</td>
 <td align = "center">1</td>
 <td align = "center">1</td>
 <td align = "center">-</td>
 <td align = "center">-</td>

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

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

+ 13 - 13
src/src/WrapFifoChain/FifoLMX/temp/FIFOHS/FifoLMX_tmp.v

@@ -1,24 +1,24 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Template file for instantiation
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.02
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
-//Device: GW1N-
-//Created Time: Thu Apr 25 16:07:21 2024
+//Device: GW1N-9
+//Created Time: Thu Jun 26 10:59:11 2025
 
 
 //Change the instance name and port connections to the signal names
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 //--------Copy here to design--------
 
 
 	FifoLMX your_instance_name(
 	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
+		.Data(Data), //input [23:0] Data
+		.Reset(Reset), //input Reset
+		.WrClk(WrClk), //input WrClk
+		.RdClk(RdClk), //input RdClk
+		.WrEn(WrEn), //input WrEn
+		.RdEn(RdEn), //input RdEn
+		.Q(Q), //output [23:0] Q
+		.Empty(Empty), //output Empty
+		.Full(Full) //output Full
 	);
 	);
 
 
 //--------Copy end-------------------
 //--------Copy end-------------------

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

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

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

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

+ 149 - 157
src/src/WrapFifoChain/FifoMax2870/FifoMax2870.v

@@ -1,11 +1,11 @@
 //
 //
 //Written by GowinSynthesis
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.02"
-//Thu Apr 25 16:07:36 2024
+//Tool Version "V1.9.11.02 (64-bit)"
+//Thu Jun 26 11:10:16 2025
 
 
 //Source file index table:
 //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"
+//file0 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect begin_protected
 `pragma protect version="2.3"
 `pragma protect version="2.3"
@@ -17,164 +17,156 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `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_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
 `pragma protect key_block
-Da6ePPXJ0x1Zkr3+qduAM8J+kvtpawq4mD4KNKBETeC4EH7Szs6BzQt56oavp90RuKDAboLkt4Jg
-+G92rwctBdMEwq+eB6c7QPHl/H1uRLQVqlR4yx0r3BOVYQPjoymqLzmZv8veGRBC1kdMpZB80yUK
-zmz+xkaf5+Uj2LoGUbWb2pOECph91GIFDeF+RqGJtZTKyt08qFT8oijjiMTL0Xb+qn22EE7E1RFY
-OllWGiYHO4QEEG6qgweiS5shJRiL6+3Pxmw7CJNrKZ/zyFyC0a6pFdp6mTM2DN5SkKBIq/YzyLXr
-XKL3+73PMXlMajN6EcsM4S1BTp7fXxaHLIWB1w==
+Z83UCZIyQLA5aZMBgRXKgKdFNZPpNcLIhN5ISEHIvdrYM8ZW+qkSUJuWKX54KlBm+8ZifH61UNQE
+RnYpGjhDRAcTJZ74gsP712dIgnpfywKWv4ZK+NEMenvCbcbjjSiXlH/CMlJO8pS4We5BK2jeExNN
+jvygdNr7IiAQc8H8ivK2qFpWjMu2r69ikmGmhsMV314okW5DdzS+IUlvNzB7oijB3r9n9PnflE90
+OUWcEehX0jCn4jb34XiJxgNam7WoJF5fx4wIx0ldjFDEBcgHbrDCTqr8ET4KrNzGyHGH9GCmUW+v
+8ygXDzlmPp+ZRlqJdLYAUkCus73410L9DCj0mg==
 
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=8352)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=7904)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
 `pragma protect data_block
-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
+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
 `pragma protect end_protected
 `pragma protect end_protected
 module FifoMax2870 (
 module FifoMax2870 (
   Data,
   Data,

+ 110 - 129
src/src/WrapFifoChain/FifoMax2870/FifoMax2870.vo

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

+ 13 - 13
src/src/WrapFifoChain/FifoMax2870/FifoMax2870_tmp.v

@@ -1,24 +1,24 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Template file for instantiation
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.02
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
-//Device: GW1N-
-//Created Time: Thu Apr 25 16:07:36 2024
+//Device: GW1N-9
+//Created Time: Thu Jun 26 11:10:16 2025
 
 
 //Change the instance name and port connections to the signal names
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 //--------Copy here to design--------
 
 
 	FifoMax2870 your_instance_name(
 	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
+		.Data(Data), //input [31:0] Data
+		.Reset(Reset), //input Reset
+		.WrClk(WrClk), //input WrClk
+		.RdClk(RdClk), //input RdClk
+		.WrEn(WrEn), //input WrEn
+		.RdEn(RdEn), //input RdEn
+		.Q(Q), //output [31:0] Q
+		.Empty(Empty), //output Empty
+		.Full(Full) //output Full
 	);
 	);
 
 
 //--------Copy end-------------------
 //--------Copy end-------------------

+ 6 - 4
src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FIFOHS.prj

@@ -4,17 +4,19 @@
     <Version>beta</Version>
     <Version>beta</Version>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <FileList>
     <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"/>
+        <File path="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
     </FileList>
     </FileList>
     <OptionList>
     <OptionList>
         <Option type="disable_insert_pad" value="1"/>
         <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/temp/FIFOHS"/>
+        <Option type="include_path" value="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data"/>
+        <Option type="include_path" value="C:/Gowin/Projects/SB_TMSG44V1_FPGA/src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS"/>
         <Option type="output_file" value="FifoMax2870.vg"/>
         <Option type="output_file" value="FifoMax2870.vg"/>
         <Option type="output_template" value="FifoMax2870_tmp.v"/>
         <Option type="output_template" value="FifoMax2870_tmp.v"/>
         <Option type="ram_balance" value="1"/>
         <Option type="ram_balance" value="1"/>
         <Option type="ram_rw_check" value="1"/>
         <Option type="ram_rw_check" value="1"/>
+        <Option type="vcc" value="1.2"/>
+        <Option type="vccx" value="3.3"/>
         <Option type="verilog_language" value="sysv-2017"/>
         <Option type="verilog_language" value="sysv-2017"/>
     </OptionList>
     </OptionList>
 </Project>
 </Project>

+ 32 - 23
src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870.log

@@ -1,19 +1,28 @@
 GowinSynthesis start
 GowinSynthesis start
 Running parser ...
 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)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol 'Reset', assumed default net type 'wire'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol 'RPReset', assumed default net type 'wire'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'FifoMax2870'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 NOTE  (EX0101) : Current top module is "FifoMax2870"
 NOTE  (EX0101) : Current top module is "FifoMax2870"
 [5%] Running netlist conversion ...
 [5%] Running netlist conversion ...
 Running device independent optimization ...
 Running device independent optimization ...
@@ -29,17 +38,17 @@ Running technical mapping ...
 [60%] Tech-Mapping Phase 0 completed
 [60%] Tech-Mapping Phase 0 completed
 [65%] Tech-Mapping Phase 1 completed
 [65%] Tech-Mapping Phase 1 completed
 [75%] Tech-Mapping Phase 2 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  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 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  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 [80%] Tech-Mapping Phase 3 completed
 [80%] Tech-Mapping Phase 3 completed
 [90%] Tech-Mapping Phase 4 completed
 [90%] Tech-Mapping Phase 4 completed
-[95%] Generate netlist file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoMax2870\temp\FIFOHS\FifoMax2870.vg" completed
-Generate template file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoMax2870\temp\FIFOHS\FifoMax2870_tmp.v" completed
-[100%] Generate report file "C:\Projects\QuestaProjects\main_tb\fifo_hs\FifoMax2870\temp\FIFOHS\FifoMax2870_syn.rpt.html" completed
+[95%] Generate netlist file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoMax2870\temp\FIFOHS\FifoMax2870.vg" completed
+Generate template file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoMax2870\temp\FIFOHS\FifoMax2870_tmp.v" completed
+[100%] Generate report file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoMax2870\temp\FIFOHS\FifoMax2870_syn.rpt.html" completed
 GowinSynthesis finish
 GowinSynthesis finish

+ 149 - 157
src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870.vg

@@ -1,11 +1,11 @@
 //
 //
 //Written by GowinSynthesis
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.02"
-//Thu Apr 25 16:07:36 2024
+//Tool Version "V1.9.11.02 (64-bit)"
+//Thu Jun 26 11:10:16 2025
 
 
 //Source file index table:
 //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"
+//file0 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect begin_protected
 `pragma protect version="2.3"
 `pragma protect version="2.3"
@@ -17,164 +17,156 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `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_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
 `pragma protect key_block
-Da6ePPXJ0x1Zkr3+qduAM8J+kvtpawq4mD4KNKBETeC4EH7Szs6BzQt56oavp90RuKDAboLkt4Jg
-+G92rwctBdMEwq+eB6c7QPHl/H1uRLQVqlR4yx0r3BOVYQPjoymqLzmZv8veGRBC1kdMpZB80yUK
-zmz+xkaf5+Uj2LoGUbWb2pOECph91GIFDeF+RqGJtZTKyt08qFT8oijjiMTL0Xb+qn22EE7E1RFY
-OllWGiYHO4QEEG6qgweiS5shJRiL6+3Pxmw7CJNrKZ/zyFyC0a6pFdp6mTM2DN5SkKBIq/YzyLXr
-XKL3+73PMXlMajN6EcsM4S1BTp7fXxaHLIWB1w==
+Z83UCZIyQLA5aZMBgRXKgKdFNZPpNcLIhN5ISEHIvdrYM8ZW+qkSUJuWKX54KlBm+8ZifH61UNQE
+RnYpGjhDRAcTJZ74gsP712dIgnpfywKWv4ZK+NEMenvCbcbjjSiXlH/CMlJO8pS4We5BK2jeExNN
+jvygdNr7IiAQc8H8ivK2qFpWjMu2r69ikmGmhsMV314okW5DdzS+IUlvNzB7oijB3r9n9PnflE90
+OUWcEehX0jCn4jb34XiJxgNam7WoJF5fx4wIx0ldjFDEBcgHbrDCTqr8ET4KrNzGyHGH9GCmUW+v
+8ygXDzlmPp+ZRlqJdLYAUkCus73410L9DCj0mg==
 
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=8352)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=7904)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
 `pragma protect data_block
-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
+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
 `pragma protect end_protected
 `pragma protect end_protected
 module FifoMax2870 (
 module FifoMax2870 (
   Data,
   Data,

Dosya farkı çok büyük olduğundan ihmal edildi
+ 39 - 36
src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870_syn.rpt.html


+ 3 - 3
src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870_syn_resource.html

@@ -30,10 +30,10 @@ table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-co
 <th class="label">ROM16 NUMBER</th>
 <th class="label">ROM16 NUMBER</th>
 </tr>
 </tr>
 <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">25</td>
+<td class="label">FifoMax2870 (C:/Gowin/Gowin_V1.9.11.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">2</td>
-<td align = "center">23</td>
+<td align = "center">25</td>
 <td align = "center">-</td>
 <td align = "center">-</td>
 <td align = "center">1</td>
 <td align = "center">1</td>
 <td align = "center">-</td>
 <td align = "center">-</td>

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

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

+ 13 - 13
src/src/WrapFifoChain/FifoMax2870/temp/FIFOHS/FifoMax2870_tmp.v

@@ -1,24 +1,24 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Template file for instantiation
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.02
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
-//Device: GW1N-
-//Created Time: Thu Apr 25 16:07:36 2024
+//Device: GW1N-9
+//Created Time: Thu Jun 26 11:10:16 2025
 
 
 //Change the instance name and port connections to the signal names
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 //--------Copy here to design--------
 
 
 	FifoMax2870 your_instance_name(
 	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
+		.Data(Data), //input [31:0] Data
+		.Reset(Reset), //input Reset
+		.WrClk(WrClk), //input WrClk
+		.RdClk(RdClk), //input RdClk
+		.WrEn(WrEn), //input WrEn
+		.RdEn(RdEn), //input RdEn
+		.Q(Q), //output [31:0] Q
+		.Empty(Empty), //output Empty
+		.Full(Full) //output Full
 	);
 	);
 
 
 //--------Copy end-------------------
 //--------Copy end-------------------

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

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

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

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

+ 113 - 123
src/src/WrapFifoChain/FifoShiftReg/FifoShiftReg.v

@@ -1,11 +1,11 @@
 //
 //
 //Written by GowinSynthesis
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.02"
-//Thu Apr 25 16:08:18 2024
+//Tool Version "V1.9.11.02 (64-bit)"
+//Thu Jun 26 12:23:20 2025
 
 
 //Source file index table:
 //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"
+//file0 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect begin_protected
 `pragma protect version="2.3"
 `pragma protect version="2.3"
@@ -17,130 +17,120 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `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_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
 `pragma protect key_block
-rE66WtNKtc22HlKA/X4eJurtJEnvZemh7Zi9pohq7hHdYu15Y21d8CKvWJizh8HxY9I0OT+eTJYe
-eqAmDwscz3d6gWPx0ty1wAovCUkRxoMRBOBCmiJBj1FAq23KXlKei5tCXIQQG+7uAA9Mz6Jr+6hd
-+siV1FTOW4hlWZSMlHvcc5M3QH2IpgONxuKpGtgigAjcxFHeL61jOKWUafSHFW6bf8j2J5rsbwqY
-ArJzg7FAyvR/3aNkWyNra/6lK47Ld15z5DXOp6Qw4yowJyzNpUIg7BGTwuT5hvVdE8HU5+LAGBLC
-8DM4h8FNMqFHubE/tetwFYOqKFxGclYw1Xqrhw==
+cmKgCo6fl4yQ2daLlTEWjlhIxL+cA+gLe2lZZKzdOibLuR2nTfuVFWjCEwTh13nKYXD2E4QQIKnU
+CgcZ63ka3W0fX8FDJliq5hS84GB/V4uX5isGQ3HQR8lU0cUGT1+2BNIgZP5xRrupuGV015dOS6pk
+8eq1CfA4bEzcv43TsfOVPVn57dyX8YDzui1OAcbghOU36J+oNd8SMTZja0oNucAm66qjYGWyuw0x
+2qPn1Bh9TILELT6drK50uiV+QqRfK/4noLg1AskmjWMyuYAyqw9NLSxsYSSTBRo+rj6cekwvE33T
+HIh3VFyc2t5fnAnrVhmzNZEMicj1U34soUinRQ==
 
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=6400)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=5840)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
 `pragma protect data_block
-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
-BrWHDjSsnheYikR4eooDlA==
+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
+BfEUBlASDwCIOUXz90zB1rtT+awvNQfLQ0k=
 `pragma protect end_protected
 `pragma protect end_protected
 module FifoShiftReg (
 module FifoShiftReg (
   Data,
   Data,

+ 79 - 101
src/src/WrapFifoChain/FifoShiftReg/FifoShiftReg.vo

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

+ 13 - 13
src/src/WrapFifoChain/FifoShiftReg/FifoShiftReg_tmp.v

@@ -1,24 +1,24 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Template file for instantiation
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.02
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
-//Device: GW1N-
-//Created Time: Thu Apr 25 16:08:18 2024
+//Device: GW1N-9
+//Created Time: Thu Jun 26 12:23:20 2025
 
 
 //Change the instance name and port connections to the signal names
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 //--------Copy here to design--------
 
 
 	FifoShiftReg your_instance_name(
 	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
+		.Data(Data), //input [7:0] Data
+		.Reset(Reset), //input Reset
+		.WrClk(WrClk), //input WrClk
+		.RdClk(RdClk), //input RdClk
+		.WrEn(WrEn), //input WrEn
+		.RdEn(RdEn), //input RdEn
+		.Q(Q), //output [7:0] Q
+		.Empty(Empty), //output Empty
+		.Full(Full) //output Full
 	);
 	);
 
 
 //--------Copy end-------------------
 //--------Copy end-------------------

+ 6 - 4
src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FIFOHS.prj

@@ -4,17 +4,19 @@
     <Version>beta</Version>
     <Version>beta</Version>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <Device id="GW1N-9" package="PBGA256" speed="6" partNumber="GW1N-LV9PG256C6/I5"/>
     <FileList>
     <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"/>
+        <File path="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v" type="verilog"/>
+        <File path="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v" type="verilog"/>
     </FileList>
     </FileList>
     <OptionList>
     <OptionList>
         <Option type="disable_insert_pad" value="1"/>
         <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="include_path" value="C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data"/>
+        <Option type="include_path" value="C:/Gowin/Projects/SB_TMSG44V1_FPGA/src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS"/>
         <Option type="output_file" value="FifoShiftReg.vg"/>
         <Option type="output_file" value="FifoShiftReg.vg"/>
         <Option type="output_template" value="FifoShiftReg_tmp.v"/>
         <Option type="output_template" value="FifoShiftReg_tmp.v"/>
         <Option type="ram_balance" value="1"/>
         <Option type="ram_balance" value="1"/>
         <Option type="ram_rw_check" value="1"/>
         <Option type="ram_rw_check" value="1"/>
+        <Option type="vcc" value="1.2"/>
+        <Option type="vccx" value="3.3"/>
         <Option type="verilog_language" value="sysv-2017"/>
         <Option type="verilog_language" value="sysv-2017"/>
     </OptionList>
     </OptionList>
 </Project>
 </Project>

+ 32 - 23
src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg.log

@@ -1,19 +1,28 @@
 GowinSynthesis start
 GowinSynthesis start
 Running parser ...
 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)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol 'Reset', assumed default net type 'wire'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Undeclared symbol 'RPReset', assumed default net type 'wire'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Analyzing Verilog file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'
+Analyzing included file 'fifo_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":1)
+Analyzing included file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\static_macro_define.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":2)
+Analyzing included file 'fifo_parameter.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Back to file 'C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":57)
+Compiling module 'FifoShiftReg'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs_top.v":4)
+Compiling module '**'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+Extracting RAM for identifier '**'("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 NOTE  (EX0101) : Current top module is "FifoShiftReg"
 NOTE  (EX0101) : Current top module is "FifoShiftReg"
 [5%] Running netlist conversion ...
 [5%] Running netlist conversion ...
 Running device independent optimization ...
 Running device independent optimization ...
@@ -29,17 +38,17 @@ Running technical mapping ...
 [60%] Tech-Mapping Phase 0 completed
 [60%] Tech-Mapping Phase 0 completed
 [65%] Tech-Mapping Phase 1 completed
 [65%] Tech-Mapping Phase 1 completed
 [75%] Tech-Mapping Phase 2 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  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "wfull_val1"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 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  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
+WARN  (AG0100) : Find logical loop signal : "Full"("C:\Gowin\Gowin_V1.9.11.02_x64\IDE\ipcore\FIFO_HS\data\fifo_hs.v":15293)
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 WARN  (AG0101) : The netlist is not one directed acyclic graph
 [80%] Tech-Mapping Phase 3 completed
 [80%] Tech-Mapping Phase 3 completed
 [90%] Tech-Mapping Phase 4 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
+[95%] Generate netlist file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoShiftReg\temp\FIFOHS\FifoShiftReg.vg" completed
+Generate template file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoShiftReg\temp\FIFOHS\FifoShiftReg_tmp.v" completed
+[100%] Generate report file "C:\Gowin\Projects\SB_TMSG44V1_FPGA\src\src\WrapFifoChain\FifoShiftReg\temp\FIFOHS\FifoShiftReg_syn.rpt.html" completed
 GowinSynthesis finish
 GowinSynthesis finish

+ 113 - 123
src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg.vg

@@ -1,11 +1,11 @@
 //
 //
 //Written by GowinSynthesis
 //Written by GowinSynthesis
-//Tool Version "V1.9.9.02"
-//Thu Apr 25 16:08:18 2024
+//Tool Version "V1.9.11.02 (64-bit)"
+//Thu Jun 26 12:23:20 2025
 
 
 //Source file index table:
 //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"
+//file0 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs.v"
+//file1 "\C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v"
 `timescale 100 ps/100 ps
 `timescale 100 ps/100 ps
 `pragma protect begin_protected
 `pragma protect begin_protected
 `pragma protect version="2.3"
 `pragma protect version="2.3"
@@ -17,130 +17,120 @@
 `pragma protect encoding=(enctype="base64", line_length=76, bytes=256)
 `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_keyowner="GOWIN",key_keyname="GWK2023-09",key_method="rsa"
 `pragma protect key_block
 `pragma protect key_block
-rE66WtNKtc22HlKA/X4eJurtJEnvZemh7Zi9pohq7hHdYu15Y21d8CKvWJizh8HxY9I0OT+eTJYe
-eqAmDwscz3d6gWPx0ty1wAovCUkRxoMRBOBCmiJBj1FAq23KXlKei5tCXIQQG+7uAA9Mz6Jr+6hd
-+siV1FTOW4hlWZSMlHvcc5M3QH2IpgONxuKpGtgigAjcxFHeL61jOKWUafSHFW6bf8j2J5rsbwqY
-ArJzg7FAyvR/3aNkWyNra/6lK47Ld15z5DXOp6Qw4yowJyzNpUIg7BGTwuT5hvVdE8HU5+LAGBLC
-8DM4h8FNMqFHubE/tetwFYOqKFxGclYw1Xqrhw==
+cmKgCo6fl4yQ2daLlTEWjlhIxL+cA+gLe2lZZKzdOibLuR2nTfuVFWjCEwTh13nKYXD2E4QQIKnU
+CgcZ63ka3W0fX8FDJliq5hS84GB/V4uX5isGQ3HQR8lU0cUGT1+2BNIgZP5xRrupuGV015dOS6pk
+8eq1CfA4bEzcv43TsfOVPVn57dyX8YDzui1OAcbghOU36J+oNd8SMTZja0oNucAm66qjYGWyuw0x
+2qPn1Bh9TILELT6drK50uiV+QqRfK/4noLg1AskmjWMyuYAyqw9NLSxsYSSTBRo+rj6cekwvE33T
+HIh3VFyc2t5fnAnrVhmzNZEMicj1U34soUinRQ==
 
 
-`pragma protect encoding=(enctype="base64", line_length=76, bytes=6400)
+`pragma protect encoding=(enctype="base64", line_length=76, bytes=5840)
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyowner="default-ip-vendor"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_keyname="default-ip-key"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_method="aes128-cfb"
 `pragma protect data_block
 `pragma protect data_block
-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
-BrWHDjSsnheYikR4eooDlA==
+mpjurR7tikdH0QOw0xiqgCc0DrmO7tCtG2+F6C0XrY+dpDiEkLSK0N0hrq0TvyepDiLZbmZdhZej
+IE0bfbBvmdvV9T1oxXh+9R2ljPZyIGKb2A75gYBXcQCoKe+0IeyZPeYeLPhK1RWl1CtXuwz62rZa
+dP0Sw48QKU9B3sOdOU+PYCU/IR6GvsMx9yHfTwzTtOn+rpcJQ3K24f0tusKB2HyroQaxGUQCVvPs
+1EHhD8OmHH8T5z/8xG6YyUSQ60OpcE9WyzByGbGDxRUjK+JajwporFjO7Cf1y4akb6dirwfDJTro
+pZNP2y+Dc0NuFH6tBCeS+zFnD2OQ1m7sbWyo2OnGy13kOCi/TGlXnDiW9IeauAB9VpD0sCnkOkVe
+qQTK3SJ9x9VCEyYlEeKU9Pm5j/gROmFiCLCx+o4MHVkTwJ9IwLUQbChGkdRBx8PFDQaWvNq990Ef
+ediyDqARj1Lax52thsA9Iy9l08grAX4TP9g0WLwlkczMiSzcpdDyYAikJ80bgFnE6TElvaIsWcwW
+S9g4H1iYiJGNU0hBPtSSl3BryTdH0p2vnLHorF1sTgKDOjQV6f+WbGa1zZEkBZH4OkFKf0/K/7V8
+7PJzBIvCCT6m7gcgX0e7avlcq5a+8/BVggL5q46rb4JFGcSS7XQVGa3l/mgAsA4awpcr8TM/bG1a
+KUK6rdMf/w8htJp8XSmw/yVJ8D36byUyIxtTzap4knOG5iSHYobbcqCx+2++f5VfPYT5f3Zb5jT9
+uKBXcX512dSc0VHnu779jB6jz4d6z4XFbAu7aP0MTrH8g1Nw1xb5ie/Vb1K9Dm1c1Sq2YkaJPa7u
+6ko6vc9DNMy4po3XIbv/xK/qARRjswX+EbihJVdbtxLk19p7ElX+dzkEvlU3+Iwn6WgfWWli8dXJ
+c6MJ7SgUMtG3jh3o40q3QOeN6B4o/fJD/tn6FU6LY5QosigHLSqiB+EKZIOUcsKzSeMeESuad7xb
+zvpkeLg0JUdZkjX923y5LKLXiKVaUSpX3owYZxEOSAvQe8I+FDQ2id9540IBjMpQg1hGcvPXUJVA
+4m8wRctWmNG4cxGmbJta4RXOpsCdDmNuOZRW/PkzHGgv8fDKGPUjYbM6D6KFVImTK69c4UKo+SlS
+oWU2DKpc1HOo3ENyE7r8Gf+DJv/FgfiZABoh8dYwqmuOLz1i2i/3uw17ECYPFs8ymyRUuc36ANC9
+XJ/kYc8No+RVyUA2ofYLWbURtk8Y8p78wD6kN8Uonnr6nADJpY3fD7OvpMWOMNVL+nyeU70ZLL2t
+a9iml3Ok1SDxNnUAKkGEQXYjqMoFwd/fmQaJjZAUbFi3di6knJZBRupCa5I/4CMUPxQS+I7TgnTA
+AZuzdC5yCOZu/pltn3GTyxRJyNwzoXwcOh2FWKHafKAFdFzqfwRgWJ72hsUExgXVbWVGhisjsa4A
+HsJGKBrlNPMHR44kZzSiJHqnsf9UBt0YPPlPazVFFy9lQKjHCNP3zP0oyGGzIusIF+iFJiIc/4C7
+w1roQsZxBSAIlkVM8s5J/I96at61yiDQb9mbYMy8xY/hVpTFFPGvb+XOhm++QD/m2AtFb65qKy5X
+7XRe5TUcdE+SYr3xwa5hqNOUe52032b3WLoi1dwo+krbgqOV6Jawuq+INwcGxyeUGr3ecwVj1Qvg
+q7pErlwT1HrB+fp/C55Q2TksyAIKSFm8ktZaMDXmKY40gjstWy51YcjrgMltBPqdw2ndrWOLntky
+pob88zeLYkgp3hOO90GCziNTDf5CAQJl8s51Xhio4+OcARMBqSEJYQMvetYJ+Ok9TMV+uPPHQCvJ
+1P0aEzAMbq8NZi/iLb4y/ri/Uqj0tzp8JmBHvKOcUTXknlydOz7K2q1SZlo/FK2jWJPNlzS/e5cB
+qveTRdIfpD5cA2+oUpR2vTGsZNrajhL4Zc/1ddoT38u+uBAj8uZnMd6b3waWcdE60kjIk2Bs7vW/
+7hUO950pC8bz9KEB+RwYWFsjhej1ZbXDmKpU9lu68nV/It0TaBdsaYODl5DM/FBKFD9XFpdvmyHD
+jSBi/xZ/Y0L2xoeBrCiaNz27Rdx9MXY+hnNrJmsF/KHhedR4HgeAGe1lb6zvc3x9DYOq+fnd+LBB
+5SyFTw8YZCri80noyS4ZyLVAXe6/M3TzurEzfEXpJFvhf9sReVGMEly1EWUp5radbq2MPzXtcs1r
+y7NepP3cZky+v6TlQsajObqGGDznDS62/HAnR/oxp8zzU/dSHGpab4dENcaSB04UmBbsKcZLTwEZ
+V5OMNQvrTVHhS2m7b+j4ND6HjrY44qk0QpIAlsDupcsnZuNkC8i0TrU6v/RRn2uj7R3Z9iFW8K/V
+4cCI7pDSe3eSyPjdBB3wUk7aoRQt1gHm60PdqgdaqA4NtSm5/jd/LX/JQMJANTJuw2T+TXuE+Vea
+aclkb1AmoDPWWrZEbeDjXzqcWzWWbteI2AhmnXTzwR7ytMA5QnGuOxHzA7V+Mq31kUhRUKS//lcE
+1NY43AQDFJ7yRMSHrN4ZUgjfPT5iGZBUbm17HjPrN9cVRlrQgZJw+cIrjwPd9JU+/RHqPD04LUdI
+uffBlnpS25Ywft4spa9fX6vskx8QQZ4ShD39G5CTsPeJaJJii+y7WpKFkZ2JS4PpGWLqxSrCen0z
+QvMqVzzlaJtzN6OmUzMgFItku3fhzINnLnzbi2hyfi4nKBXSXrs1o4UGH37VUZa+QXTZp7sdn5Mf
+NkY8z/FpRl7Dyot+WX/wju15zmJJojcdqSrmxqfa/9RgtClnTi030sx0FUsYCvK142JtQjp0o+KE
+IIaxHVtUpOqgBL/8xS4SYty8Y+LuW4byTnTgG8PJn/6Ib20E67LjYZNrQDoGQJidncYyR65OAUEy
+HMG41ZQK2xRB1B7B+BumiW2DxPKC8MbGJBqdCIyftLXrZwnGw35FKLMZyoa/LISkP7+m9Z108vf/
+S81OJ/iE3viDd8a1BFUL4a5qVt2TfIJQt/u+hGv6kAc5YVK5OOM0JGrxnSQTGjqsLc2WhuvBmR71
+mH3TAncSeKSsub5ZO+YqG08B+fOtmWLDGo/TwXOCYMedTVerigeAjll8QA9ZZ0vodrPk9ZSyvc8z
+afmPfChg7dPBDkBQjkbQlzVD7ioQRuoN9j/YoK+EiHkR+NSbpIfr3MbOuHzc6hjcb5wv0DZyP23L
+hTkqpjwYk4+o9xLF+jmZyVVx1+F34i7SFhai7c9mguP4Q7mR1zZlKXP6I6S7h0vGA82FxmK8zmAA
+uEVhVYqIl/qcAXJ2DHv1K1DCAfhnBhs7PbCdgghJzc6qtIbHUDMu81YJdbmWE5QKxPGu9nxtENlW
+2ha8bUWIY+2u9IwrJVAFBftEo2Ora6LnRpapy+cd2NsEjsfh0Acw48qxlSDSlhujGtv0g+KbkKuX
+0KHtqThYT2xhYHvzi8170kklcFpp2Jx+W1gVoxJPjLSG2AWcKJw0Bmlmf/ZoxUh1SL2eU+b+HAp6
+04zOcwEcqHXLb2eLC6rJnxFtS3UEhCAP4Znlcbk+STEkV5omgEixQdYDyxeYjWul4dLd7rUHJ4GT
+t8zpMIjz3Nk1aR+gIHT7jQLlAnaLpOuMfCWjZYHvAu976nVgvtmqQy3qMU2a4uhXqryNQNkFwP3y
+dg9Yf3dIxQ9AUnkFa9bGzpYoAMNR7+CgWcTaArFrA9kmZKAvHLonEN182u2oYVKgjPh0nCdalEGS
+H+N48QtzWSoTL5MyPT+J136/0RhMoeo7mwXDCPuKqFWpmlbauqhBqGaKUhsEVkKQi3+lbEl5fwVj
+jHTx60Db4d53q+eQkgECiI8v8N6sIeTtRjGci4B1jqrjBXShTOcB0p2n+RTd+UukckthERB/g9RQ
+7o9F1d7KGDWEpuqFoVStcpOFKneq7bAgV2wHcrvOR1DVgiqRSdpi4WenBseULgkLgBD+rBz8B4kX
+dYu3YLsYpD7iMCtn7fCMZT9GqbHg0kbfavTO0bi4EFnurspjVYciX1OW2KVsedCQXa6rcY7nytAX
+TofR4v6U4zqORezuEyd/rfYI6RPjLKRP/wNKuFGmgweWcx1hzmuaFE0akRY1ijn2EtT14gaIBOaD
+9R171so1Cmcxqs5mZPfPGbX2GQWZrP44Yfk2ZiLKAZ/r5gTC+btLCc6KJ4jgZ7RjImqgDPgDrLDi
+CSiqiaPWoJPvVw2/uYNLNt4gSplMnx03wZYFJjPPQFZ15ywW5sn5urnGS2okM6txScm/BowyOCku
+LWPVROua4LlMmEA5DQziAcPcd/iklw2Vdrb2RXYDijV67E9A/jNHSIIlnwxWY6KyvyXFQwwY7+xS
+IfMGjuR3KxSTislnCTTX4wZZhs5lstOnmSVz/ON8OnqBJMNI+RUSbgC7QD/gQNX2php9zzkNIWFs
+6WoYXqFpDRd1bMULid9kYIfKYoqOhv5UrJ0xvH1nyXd0aY/iqOJwFD5zZeyCmnG3Z29lVHBbG3N5
+Qjv5tpTkHXQg1cn4FdLSbfIwgZam6/Zfc99N76PcS79MNjhu09S0cf30QaootHBRdaCZHnOe0gae
+JWh/ZwCgE0m649hUCKn7f0Ae3xnaBbnK4LPbW2x6OZnU8N3aOX5dzwhEGLA8sXLgzlaybpGQsWH3
+wGib5OmCrpSzv+hU52mel8r8rd4bA5y8af7ROQ5mtEY7YUvIYxIfTt6Vpd8xNzfTD4hWoRpA2BYI
+g6XhYnaQfucxr8YeXZEAsh2L0POyY2hb7asOhBIUUtm3wGTxdXaWuwE5PjWLiNo1gAnv3MN5wM77
+E1elZKdSEYTKClTPUZa6xfbqjJfMbr0+rMj1bMrpI/3Z2XC+ZeGKE4qHPzuHoPKVfSukMv+RAGsn
+W51bDfZG60swBAdLaV7vNxfrb7jarvhEfYX28JRAjcy+312xerz3OSn34QD5F57KEWBtppzBjhAE
+YbJC0auNInSMptV/EZ4qtD6yJLoEdazV5BXNeHU7CqoQ3VnjNK0ZHGGfdIrcXZlwXA2Wj+bZdTaV
+a2meQamfYefcf7rxI3SFn/cZYPkwTGepA8241+K9QvNWZ5XerOJHXrNerK8r8HDKd1iiwZXIU3SC
+A1PEOYaWUc4+62V0PHGZh9+vTczbL0HrKuuDivJmUO3wJh9cUZyU8rzsYD8aVG6yz0Lm9xvW105i
+o+zUxHbEyKUBHiamUsJQOEEe6FauLIH14Wa9f7PmDYqazWjRah3Z96hA4nBtvlf8/qxiq8ebNoPb
+NUrKGAN+WZdzpV2Go4sg/08TDGLFW+MsKErzBIP1uCrJWrLtklKC6hKcwYJvt4iAd2ETjmKuVACK
+UIPfKwgugVcS1zWfufM3A8NUFvz31m5TdRqa5g6XIx3YB5G5K5gWKXYraFNZixHrk93gAT3u/xdi
+xahCISW+e5RwwtwJOsRq9Ndo+lu45t9ZoEd5is1wSNCibHFOYmTsjf4Hcc09JgB2gygsQg2VsRXb
+ZpJY5FN6is4mm/wrVIMqtnScQX753+J+e+VF4tePTm6jghHJrX4pvdQBeDGjJIYwIThl8e1KnTUa
+6T5qTLoo70lStOi99B7XBNIk4YvMN1Fhc1WDt0u/vLjFnUFb2dnfaZXj8o3ZC/zBM6ufs8f8BtWX
+0hW3cE4Brth1JwKVXx2PbQrDLv9Gn5Mda/cPlEjx0ssmJbidpYomyRYjXMxFlBvX0E7JjPo1K/CE
+/Vm/XAM+1pj05jdlRF9HRC0Xj/0D95B1vuamIMR/tMfYp1xJFyyl7cze+AfRTzXkTleiOyGQp37t
+stf++ZqFI10RIX5XqR8aA6bTV4ifmLYdyO0aNdez8/V7tJfABveLib4eb7Z+yiGbiomtf9rr7jZz
+UK185ZwgzmQr1jClnXttmWpfd48uLEi0HPX8ADz0HQOy33RN4zNthX5isdE7ZI1Ea3llmBbolGpU
+a3ku+F/PbZ1y9VrPLVxAThWPPxWXrCZ+yfwHLe6fg0Nzbi85ldG1LruKPlvmB65GeKeEUbEO2PVv
+wQmM8UiaGULVxRGtZ/WS6Glc+O8Id0bdlkTj1djXKlD0svRPARx+3B7heYA2jqLj7MAoBuat60qz
+FEavyXFAXs7Ih2ndb0IqSDBgrSgVrarN/7XxVdRTucto/a+nUtYL/rNzzpI6bldx+wRFFvGKM8QH
+px7jKeWnw2rwNGiUZ64iMU2S7GbHU3ZKN8OrxaUE38xH7aPp5MGgvd2s1aL0z1vK75hB/kN2ZLw6
+T8dWxaMVj78q4z20MNIMAC7KkkZC3oUEXjSC6S2EASL/WrmyHx8RZxT56CLVrL49nQh3Nm+CEYwA
+yumcQdzqG/HzWFO7FljFntWvC66fQsjPhXloxDUchfAXhjOtA19uPWkthVoGVufjP/k0c5G2H55m
+tptvlRzBVS19V2CLmEO5sB1wALqXZz+MA7RmYySu6aQsufF1jDFceNh/oQbTyUTW+zS/z7t9Oh7X
+M1EMI+6mKzbkr4K2VEgUy7Z9Fo+VmUhZa83ZVWfI0PU80iGYmLjtLFbmliBpiw5k9kBwvxLWcaYp
+BVPeMRnRsXUMz/L46bUF7IoN0hCTI4xpMBUy+GY6FkZMZ9illKa9yvBU4au7YlkltiuDA5IAsAxj
+nsJAbuhbQ5/HZB2bu+F3v8JQj98Xjz60N1/8/lBhExyPQDvlQnIZe/Rpta8WchPm4e862w2NH7pO
+VgkFtT3xpkllht8ohMxXWWEpnF2qN4eB+/8E+y9YWiV2eE8PdL1OjmLNZMp94D6Sy0ePhbeQ6DJ0
+aWsdZHsolKTqVjPrKjbsTsmIYuWwHB2w+8Tu1XzIHlYvpReOgMIH/gHtA+H2z83geiB4zAnc0XGr
+o8lzgaGxhDa1alP80ZtIdVuOuwV86UxgmfDinLWDhlFN62UbNk4BlLgarOZ3njJVTMFLJhEkhKsA
+Qhq3jHTgebTukc7zUToEznJyGpWSQypDEKHsjn50u9ztfCtTSK7F2Wr8XadbQcJ8poQF9ivHtbnz
+xBevFqw5DgW8bxfu3XGfv6zGlhYw5zSAraY+4C+WyQds6XOdNftAP9iqcb2c/3yQi5R2vPf4izxj
+fiND5v0qDXrejLASd9JPMvZnSxrkSXO4bKhN20hX82OoxL/phrQmBqRtD5Hp81H5tkJQTlVOhNWl
+aTjyw8y/kgasdZvaUQvQgmqHgrKFr/QimdkTPnheSViLn53bXjb5K9Yb1ggLTTF8vtQvFaDCHlb2
+kFvD2V7LDq0Wpajpb2nX4vj/1Km8iozaw1kxEBCiJ/f+r79OnP80F1muBQSCHZHrMKvCWJh7Qdxp
+16S6C+eWEfTdQpO0UeIHmgnX+duLBsIec7qPGa9BPY6v6fYSe59XWd8XlVH2tp9ippAAiY2RQbi+
+PYX1eGjo+6KkQ97vqbbzSlVz+WgY9jo4x0l+8cxDN14WFCT2d4woDTR3WexQ1q2Ii3JN7ppsrtCS
+CCYhBmaqujB/CF1bsuyF76xP/uilGHAS4cWY+dZda+elkUw/PBw+7aE2fLNQ4vJmS2XkhPd4j60W
++D73S5LMKPe2GiUhM2siU7Y3s+f9o2Ahm3lacvVRmeHIvZK+aQ40T+OFWlIb6VYltYtDvlxmFRBQ
+cjf5yRYhtPv8G5NHBw4akvv7y/jtL7JxgWTkmux7fWgul8hTqC5cY835wFTvuf7NcsfyXAHDvyfK
+8FJA/ZQb1gEi2/6sTyfPJUjkMvJ1HhPmKw7BvqQT5EiLL6qze+Dr3wrErJo1qTeJ7UPJ1iVO/tfg
+BfEUBlASDwCIOUXz90zB1rtT+awvNQfLQ0k=
 `pragma protect end_protected
 `pragma protect end_protected
 module FifoShiftReg (
 module FifoShiftReg (
   Data,
   Data,

Dosya farkı çok büyük olduğundan ihmal edildi
+ 46 - 43
src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn.rpt.html


+ 2 - 2
src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg_syn_resource.html

@@ -30,8 +30,8 @@ table td.label { width: 20%; white-space: nowrap; min-width: 20px; background-co
 <th class="label">ROM16 NUMBER</th>
 <th class="label">ROM16 NUMBER</th>
 </tr>
 </tr>
 <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">19</td>
+<td class="label">FifoShiftReg (C:/Gowin/Gowin_V1.9.11.02_x64/IDE/ipcore/FIFO_HS/data/fifo_hs_top.v)</td>
+<td align = "center">16</td>
 <td align = "center">-</td>
 <td align = "center">-</td>
 <td align = "center">18</td>
 <td align = "center">18</td>
 <td align = "center">-</td>
 <td align = "center">-</td>

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

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

+ 13 - 13
src/src/WrapFifoChain/FifoShiftReg/temp/FIFOHS/FifoShiftReg_tmp.v

@@ -1,24 +1,24 @@
-//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
+//Copyright (C)2014-2025 Gowin Semiconductor Corporation.
 //All rights reserved.
 //All rights reserved.
 //File Title: Template file for instantiation
 //File Title: Template file for instantiation
-//Tool Version: V1.9.9.02
+//Tool Version: V1.9.11.02 (64-bit)
 //Part Number: GW1N-LV9PG256C6/I5
 //Part Number: GW1N-LV9PG256C6/I5
-//Device: GW1N-
-//Created Time: Thu Apr 25 16:08:18 2024
+//Device: GW1N-9
+//Created Time: Thu Jun 26 12:23:20 2025
 
 
 //Change the instance name and port connections to the signal names
 //Change the instance name and port connections to the signal names
 //--------Copy here to design--------
 //--------Copy here to design--------
 
 
 	FifoShiftReg your_instance_name(
 	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
+		.Data(Data), //input [7:0] Data
+		.Reset(Reset), //input Reset
+		.WrClk(WrClk), //input WrClk
+		.RdClk(RdClk), //input RdClk
+		.WrEn(WrEn), //input WrEn
+		.RdEn(RdEn), //input RdEn
+		.Q(Q), //output [7:0] Q
+		.Empty(Empty), //output Empty
+		.Full(Full) //output Full
 	);
 	);
 
 
 //--------Copy end-------------------
 //--------Copy end-------------------

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

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

+ 15 - 6
src/src/WrapFifoChain/LmxWrapper.v

@@ -59,7 +59,10 @@ reg plsToggleSyncB;
 
 
 reg ssR;
 reg ssR;
 reg ssReg;
 reg ssReg;
-reg ssRegDds;
+// reg ssRegDds;
+reg ssDdsSyncA;
+reg ssDdsSyncB;
+reg ssDdsSyncC;
 reg [3:0] lmxWordNumReg; 
 reg [3:0] lmxWordNumReg; 
 reg [3:0] lmxWordNumRegR;
 reg [3:0] lmxWordNumRegR;
 //==========================================================================//
 //==========================================================================//
@@ -112,10 +115,14 @@ end
 
 
 always @(posedge RdClk_i) begin 
 always @(posedge RdClk_i) begin 
 	if (Rst_i) begin 
 	if (Rst_i) begin 
-		ssRegDds <= 1'b0;
+		ssDdsSyncA <= 1'b0;
+		ssDdsSyncB <= 1'b0;
+		ssDdsSyncC <= 1'b0;
 	end
 	end
 	else begin 
 	else begin 
-		ssRegDds <= DdsCs_i;
+		ssDdsSyncA <= DdsCs_i;
+		ssDdsSyncB <= ssDdsSyncA;
+		ssDdsSyncC <= ssDdsSyncB;
 	end
 	end
 end
 end
 
 
@@ -141,10 +148,10 @@ always @(posedge RdClk_i) begin
 	end
 	end
 	else begin
 	else begin
 		if (!LmxDirectFlag_i) begin  
 		if (!LmxDirectFlag_i) begin  
-			if (lmxWordNumReg == 0 ) begin
+			if ((lmxWordNumReg == 0) && (DdsWordNumReg_i == 0)) begin
 				PllVtuneCtrl_o <= 1'b1;
 				PllVtuneCtrl_o <= 1'b1;
 			end
 			end
-			else if ((!DdsCs_i && ssRegDds) && (DdsWordNumReg_i != 0)) begin 
+			else if ((!ssDdsSyncC && ssDdsSyncB ) && (DdsWordNumReg_i != 0)) begin 
 				PllVtuneCtrl_o <= 1'b0;
 				PllVtuneCtrl_o <= 1'b0;
 			end
 			end
 			else if ((!Ss_o && ssReg) && (lmxWordNumReg != 0) ) begin 
 			else if ((!Ss_o && ssReg) && (lmxWordNumReg != 0) ) begin 
@@ -190,7 +197,9 @@ FifoLMX FifoLMX_inst (
 );
 );
 
 
 SpiM #(
 SpiM #(
-	.DATA_WIDTH	(DATA_WIDTH)
+	.DATA_WIDTH	(DATA_WIDTH),
+	.CS_DELAY	(3'h1), 
+	.IS_LMX_DELAY(1'b1)
 )SpiMLmx(
 )SpiMLmx(
 	.Clk_i		(RdClk_i),
 	.Clk_i		(RdClk_i),
 	.Rst_i		(Rst_i),
 	.Rst_i		(Rst_i),