Skip to content

UART peripheral#154

Open
TheDeepestSpace wants to merge 50 commits into
multicyclefrom
uart_peripheral
Open

UART peripheral#154
TheDeepestSpace wants to merge 50 commits into
multicyclefrom
uart_peripheral

Conversation

@TheDeepestSpace
Copy link
Copy Markdown
Member

New version of #148

@TheDeepestSpace TheDeepestSpace linked an issue Jan 23, 2026 that may be closed by this pull request
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 28, 2026

🔧 DE1-SoC Synthesis Report Summary Diff

  • RV32I

    1. Fitter Summary

      @@ -1,16 +1,16 @@
      -Fitter Status : Successful - Thu May 28 02:30:01 2026
      +Fitter Status : Successful - Sat May 30 04:31:49 2026
       Quartus Prime Version : 25.1std.0 Build 1129 10/21/2025 SC Lite Edition
       Revision Name : utoss-risc-v
       Top-level Entity Name : top
       Family : Cyclone V
       Device : 5CSEMA5F31C6
       Timing Models : Final
      -Logic utilization (in ALMs) : 1,552 / 32,070 ( 5 % )
      -Total registers : 1569
      -Total pins : 15 / 457 ( 3 % )
      +Logic utilization (in ALMs) : 1,909 / 32,070 ( 6 % )
      +Total registers : 1536
      +Total pins : 17 / 457 ( 4 % )
       Total virtual pins : 0
      -Total block memory bits : 32,768 / 4,065,280 ( < 1 % )
      -Total RAM Blocks : 8 / 397 ( 2 % )
      +Total block memory bits : 16,384 / 4,065,280 ( < 1 % )
      +Total RAM Blocks : 4 / 397 ( 1 % )
       Total DSP Blocks : 0 / 87 ( 0 % )
       Total HSSI RX PCSs : 0
       Total HSSI PMA RX Deserializers : 0
    2. Fitter by entity

      @@ -1,32 +1,23 @@
      -Compilation Hierarchy Node                        ALMs needed [=A-B+C]  [A] ALMs used in final placement  [B] Estimate of ALMs recoverable by dense packing  [C] Estimate of ALMs unavailable  ALMs used for memory  Combinational ALUTs  Dedicated Logic Registers  I/O Registers  Block Memory Bits  M10Ks  DSP Blocks  Pins  Virtual Pins  Full Hierarchy Name                                                                                                Entity Name         Library Name
      -|top                                              1552.0 (0.5)          1700.0 (0.5)                      178.5 (0.0)                                        30.5 (0.0)                        0.0 (0.0)             1840 (1)             1569 (0)                   0 (0)          32768              8      0           15    0             |top                                                                                                               top                 work
      -   |memory_map:memory_map|                        10.0 (10.0)           11.8 (11.8)                       1.8 (1.8)                                          0.0 (0.0)                         0.0 (0.0)             13 (13)              13 (13)                    0 (0)          32768              8      0           0     0             |top|memory_map:memory_map                                                                                         memory_map          work
      -      |altsyncram:M0_rtl_0|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M0_rtl_0                                                                     altsyncram          work
      -         |altsyncram_9hp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M0_rtl_0|altsyncram_9hp1:auto_generated                                      altsyncram_9hp1     work
      -      |altsyncram:M0_rtl_1|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M0_rtl_1                                                                     altsyncram          work
      -         |altsyncram_9hp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M0_rtl_1|altsyncram_9hp1:auto_generated                                      altsyncram_9hp1     work
      -      |altsyncram:M1_rtl_0|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M1_rtl_0                                                                     altsyncram          work
      -         |altsyncram_ahp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M1_rtl_0|altsyncram_ahp1:auto_generated                                      altsyncram_ahp1     work
      -      |altsyncram:M1_rtl_1|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M1_rtl_1                                                                     altsyncram          work
      -         |altsyncram_ahp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M1_rtl_1|altsyncram_ahp1:auto_generated                                      altsyncram_ahp1     work
      -      |altsyncram:M2_rtl_0|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M2_rtl_0                                                                     altsyncram          work
      -         |altsyncram_bhp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M2_rtl_0|altsyncram_bhp1:auto_generated                                      altsyncram_bhp1     work
      -      |altsyncram:M2_rtl_1|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M2_rtl_1                                                                     altsyncram          work
      -         |altsyncram_bhp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M2_rtl_1|altsyncram_bhp1:auto_generated                                      altsyncram_bhp1     work
      -      |altsyncram:M3_rtl_0|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M3_rtl_0                                                                     altsyncram          work
      -         |altsyncram_chp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M3_rtl_0|altsyncram_chp1:auto_generated                                      altsyncram_chp1     work
      -      |altsyncram:M3_rtl_1|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M3_rtl_1                                                                     altsyncram          work
      -         |altsyncram_chp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M3_rtl_1|altsyncram_chp1:auto_generated                                      altsyncram_chp1     work
      -   |utoss_riscv:core|                             1541.5 (629.2)        1687.7 (645.6)                    176.7 (30.3)                                       30.5 (14.0)                       0.0 (0.0)             1826 (749)           1556 (466)                 0 (0)          0                  0      0           0     0             |top|utoss_riscv:core                                                                                              utoss_riscv         work
      -      |decode_stage:u_decode_stage|               308.5 (3.3)           398.3 (3.6)                       91.6 (0.2)                                         1.7 (0.0)                         0.0 (0.0)             88 (8)               992 (0)                    0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|decode_stage:u_decode_stage                                                                  decode_stage        work
      -         |Instruction_Decode:instruction_decode|  12.7 (8.3)            13.2 (8.8)                        0.5 (0.5)                                          0.0 (0.0)                         0.0 (0.0)             31 (23)              0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|decode_stage:u_decode_stage|Instruction_Decode:instruction_decode                            Instruction_Decode  work
      -            |ALUdecoder:instanceALUDec|           4.3 (4.3)             4.3 (4.3)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             8 (8)                0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|decode_stage:u_decode_stage|Instruction_Decode:instruction_decode|ALUdecoder:instanceALUDec  ALUdecoder          work
      -         |control_fsm:u_ctrl|                     3.4 (3.4)             3.4 (3.4)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             9 (9)                0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|decode_stage:u_decode_stage|control_fsm:u_ctrl                                               control_fsm         work
      -         |registerFile:RegFile|                   289.0 (289.0)         378.2 (378.2)                     90.8 (90.8)                                        1.7 (1.7)                         0.0 (0.0)             40 (40)              992 (992)                  0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|decode_stage:u_decode_stage|registerFile:RegFile                                             registerFile        work
      -      |execute_stage:u_execute_stage|             449.4 (95.0)          466.3 (102.1)                     28.7 (7.8)                                         11.9 (0.7)                        0.0 (0.0)             679 (178)            0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|execute_stage:u_execute_stage                                                                execute_stage       work
      -         |ALU:alu|                                354.4 (354.4)         364.2 (364.2)                     21.0 (21.0)                                        11.2 (11.2)                       0.0 (0.0)             501 (501)            0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|execute_stage:u_execute_stage|ALU:alu                                                        ALU                 work
      -      |fetch_stage:u_fetch_stage|                 72.9 (72.9)           91.5 (91.5)                       20.5 (20.5)                                        1.9 (1.9)                         0.0 (0.0)             125 (125)            97 (97)                    0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|fetch_stage:u_fetch_stage                                                                    fetch_stage         work
      -      |hazard_unit:u_hazard_unit|                 7.1 (7.1)             8.3 (8.3)                         1.3 (1.3)                                          0.1 (0.1)                         0.0 (0.0)             15 (15)              1 (1)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|hazard_unit:u_hazard_unit                                                                    hazard_unit         work
      -      |memory_stage:u_memory_stage|               12.9 (12.9)           14.2 (14.2)                       1.7 (1.7)                                          0.4 (0.4)                         0.0 (0.0)             27 (27)              0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|memory_stage:u_memory_stage                                                                  memory_stage        work
      -      |write_back_stage:u_write_back_stage|       61.6 (60.2)           63.6 (62.1)                       2.6 (2.4)                                          0.6 (0.6)                         0.0 (0.0)             143 (141)            0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|write_back_stage:u_write_back_stage                                                          write_back_stage    work
      -         |MemoryLoader:memory_loader|             1.3 (1.3)             1.5 (1.5)                         0.2 (0.2)                                          0.0 (0.0)                         0.0 (0.0)             2 (2)                0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|write_back_stage:u_write_back_stage|MemoryLoader:memory_loader                               MemoryLoader        work
      +Compilation Hierarchy Node                     ALMs needed [=A-B+C]  [A] ALMs used in final placement  [B] Estimate of ALMs recoverable by dense packing  [C] Estimate of ALMs unavailable  ALMs used for memory  Combinational ALUTs  Dedicated Logic Registers  I/O Registers  Block Memory Bits  M10Ks  DSP Blocks  Pins  Virtual Pins  Full Hierarchy Name                                                                    Entity Name         Library Name
      +|top                                           1908.5 (32.4)         2084.0 (34.2)                     188.5 (2.1)                                        13.0 (0.3)                        0.0 (0.0)             2401 (67)            1536 (0)                   0 (0)          16384              4      0           17    0             |top                                                                                   top                 work
      +   |memory_map:u_mem|                          53.4 (53.4)           55.0 (55.0)                       1.7 (1.7)                                          0.2 (0.2)                         0.0 (0.0)             80 (80)              10 (10)                    0 (0)          16384              4      0           0     0             |top|memory_map:u_mem                                                                  memory_map          work
      +      |altsyncram:M0_rtl_0|                    0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M0_rtl_0                                              altsyncram          work
      +         |altsyncram_9hp1:auto_generated|      0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M0_rtl_0|altsyncram_9hp1:auto_generated               altsyncram_9hp1     work
      +      |altsyncram:M1_rtl_0|                    0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M1_rtl_0                                              altsyncram          work
      +         |altsyncram_ahp1:auto_generated|      0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M1_rtl_0|altsyncram_ahp1:auto_generated               altsyncram_ahp1     work
      +      |altsyncram:M2_rtl_0|                    0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M2_rtl_0                                              altsyncram          work
      +         |altsyncram_bhp1:auto_generated|      0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M2_rtl_0|altsyncram_bhp1:auto_generated               altsyncram_bhp1     work
      +      |altsyncram:M3_rtl_0|                    0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M3_rtl_0                                              altsyncram          work
      +         |altsyncram_chp1:auto_generated|      0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M3_rtl_0|altsyncram_chp1:auto_generated               altsyncram_chp1     work
      +   |uart:u_uart|                               58.2 (0.0)            60.2 (0.0)                        2.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             109 (0)              60 (0)                     0 (0)          0                  0      0           0     0             |top|uart:u_uart                                                                       uart                work
      +      |uart_rx:uart_rx_inst|                   37.0 (37.0)           38.0 (38.0)                       1.0 (1.0)                                          0.0 (0.0)                         0.0 (0.0)             69 (69)              36 (36)                    0 (0)          0                  0      0           0     0             |top|uart:u_uart|uart_rx:uart_rx_inst                                                  uart_rx             work
      +      |uart_tx:uart_tx_inst|                   21.2 (21.2)           22.2 (22.2)                       1.0 (1.0)                                          0.0 (0.0)                         0.0 (0.0)             40 (40)              24 (24)                    0 (0)          0                  0      0           0     0             |top|uart:u_uart|uart_tx:uart_tx_inst                                                  uart_tx             work
      +   |uart_bus_master:u_master|                  346.3 (346.3)         399.6 (399.6)                     54.1 (54.1)                                        0.8 (0.8)                         0.0 (0.0)             520 (520)            224 (224)                  0 (0)          0                  0      0           0     0             |top|uart_bus_master:u_master                                                          uart_bus_master     work
      +   |utoss_riscv:core|                          1418.2 (167.9)        1535.1 (176.4)                    128.6 (13.6)                                       11.7 (5.0)                        0.0 (0.0)             1625 (197)           1242 (168)                 0 (0)          0                  0      0           0     0             |top|utoss_riscv:core                                                                  utoss_riscv         work
      +      |ALU:alu|                                344.0 (344.0)         353.1 (353.1)                     10.8 (10.8)                                        1.7 (1.7)                         0.0 (0.0)             483 (483)            0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|ALU:alu                                                          ALU                 work
      +      |ControlFSM:control_fsm|                 27.0 (27.0)           27.0 (27.0)                       0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             41 (41)              17 (17)                    0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|ControlFSM:control_fsm                                           ControlFSM          work
      +      |Instruction_Decode:instruction_decode|  48.2 (39.7)           51.6 (43.4)                       3.4 (3.7)                                          0.0 (0.0)                         0.0 (0.0)             93 (82)              0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|Instruction_Decode:instruction_decode                            Instruction_Decode  work
      +         |ALUdecoder:instanceALUDec|           8.2 (8.2)             8.2 (8.2)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             11 (11)              0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|Instruction_Decode:instruction_decode|ALUdecoder:instanceALUDec  ALUdecoder          work
      +      |MemoryLoader:MemLoad|                   13.8 (13.8)           14.8 (14.8)                       1.0 (1.0)                                          0.0 (0.0)                         0.0 (0.0)             34 (34)              0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|MemoryLoader:MemLoad                                             MemoryLoader        work
      +      |fetch:fetch|                            65.0 (65.0)           69.4 (69.4)                       4.7 (4.7)                                          0.3 (0.3)                         0.0 (0.0)             97 (97)              65 (65)                    0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|fetch:fetch                                                      fetch               work
      +      |registerFile:RegFile|                   752.3 (752.3)         842.7 (842.7)                     95.1 (95.1)                                        4.7 (4.7)                         0.0 (0.0)             680 (680)            992 (992)                  0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|registerFile:RegFile                                             registerFile        work
    3. Timing

      @@ -3,51 +3,51 @@
       ------------------------------------------------------------
       
       Type  : Slow 1100mV 85C Model Setup 'CLOCK_50'
      -Slack : 2.419
      +Slack : 4.720
       TNS   : 0.000
       
       Type  : Slow 1100mV 85C Model Hold 'CLOCK_50'
      -Slack : 0.293
      +Slack : 0.338
       TNS   : 0.000
       
       Type  : Slow 1100mV 85C Model Minimum Pulse Width 'CLOCK_50'
      -Slack : 8.868
      +Slack : 8.878
       TNS   : 0.000
       
       Type  : Slow 1100mV 0C Model Setup 'CLOCK_50'
      -Slack : 2.786
      +Slack : 4.928
       TNS   : 0.000
       
       Type  : Slow 1100mV 0C Model Hold 'CLOCK_50'
      -Slack : 0.254
      +Slack : 0.315
       TNS   : 0.000
       
       Type  : Slow 1100mV 0C Model Minimum Pulse Width 'CLOCK_50'
      -Slack : 8.826
      +Slack : 8.831
       TNS   : 0.000
       
       Type  : Fast 1100mV 85C Model Setup 'CLOCK_50'
      -Slack : 9.385
      +Slack : 10.546
       TNS   : 0.000
       
       Type  : Fast 1100mV 85C Model Hold 'CLOCK_50'
      -Slack : 0.198
      +Slack : 0.177
       TNS   : 0.000
       
       Type  : Fast 1100mV 85C Model Minimum Pulse Width 'CLOCK_50'
      -Slack : 8.783
      +Slack : 8.782
       TNS   : 0.000
       
       Type  : Fast 1100mV 0C Model Setup 'CLOCK_50'
      -Slack : 10.432
      +Slack : 11.537
       TNS   : 0.000
       
       Type  : Fast 1100mV 0C Model Hold 'CLOCK_50'
      -Slack : 0.175
      +Slack : 0.169
       TNS   : 0.000
       
       Type  : Fast 1100mV 0C Model Minimum Pulse Width 'CLOCK_50'
      -Slack : 8.777
      +Slack : 8.775
       TNS   : 0.000
       
       ------------------------------------------------------------
  • RV32IB

    1. Fitter Summary

      @@ -1,16 +1,16 @@
      -Fitter Status : Successful - Thu May 28 02:31:09 2026
      +Fitter Status : Successful - Sat May 30 04:31:48 2026
       Quartus Prime Version : 25.1std.0 Build 1129 10/21/2025 SC Lite Edition
       Revision Name : utoss-risc-v
       Top-level Entity Name : top
       Family : Cyclone V
       Device : 5CSEMA5F31C6
       Timing Models : Final
      -Logic utilization (in ALMs) : 1,552 / 32,070 ( 5 % )
      -Total registers : 1569
      -Total pins : 15 / 457 ( 3 % )
      +Logic utilization (in ALMs) : 1,909 / 32,070 ( 6 % )
      +Total registers : 1536
      +Total pins : 17 / 457 ( 4 % )
       Total virtual pins : 0
      -Total block memory bits : 32,768 / 4,065,280 ( < 1 % )
      -Total RAM Blocks : 8 / 397 ( 2 % )
      +Total block memory bits : 16,384 / 4,065,280 ( < 1 % )
      +Total RAM Blocks : 4 / 397 ( 1 % )
       Total DSP Blocks : 0 / 87 ( 0 % )
       Total HSSI RX PCSs : 0
       Total HSSI PMA RX Deserializers : 0
    2. Fitter by entity

      @@ -1,32 +1,23 @@
      -Compilation Hierarchy Node                        ALMs needed [=A-B+C]  [A] ALMs used in final placement  [B] Estimate of ALMs recoverable by dense packing  [C] Estimate of ALMs unavailable  ALMs used for memory  Combinational ALUTs  Dedicated Logic Registers  I/O Registers  Block Memory Bits  M10Ks  DSP Blocks  Pins  Virtual Pins  Full Hierarchy Name                                                                                                Entity Name         Library Name
      -|top                                              1552.0 (0.5)          1700.0 (0.5)                      178.5 (0.0)                                        30.5 (0.0)                        0.0 (0.0)             1840 (1)             1569 (0)                   0 (0)          32768              8      0           15    0             |top                                                                                                               top                 work
      -   |memory_map:memory_map|                        10.0 (10.0)           11.8 (11.8)                       1.8 (1.8)                                          0.0 (0.0)                         0.0 (0.0)             13 (13)              13 (13)                    0 (0)          32768              8      0           0     0             |top|memory_map:memory_map                                                                                         memory_map          work
      -      |altsyncram:M0_rtl_0|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M0_rtl_0                                                                     altsyncram          work
      -         |altsyncram_9hp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M0_rtl_0|altsyncram_9hp1:auto_generated                                      altsyncram_9hp1     work
      -      |altsyncram:M0_rtl_1|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M0_rtl_1                                                                     altsyncram          work
      -         |altsyncram_9hp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M0_rtl_1|altsyncram_9hp1:auto_generated                                      altsyncram_9hp1     work
      -      |altsyncram:M1_rtl_0|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M1_rtl_0                                                                     altsyncram          work
      -         |altsyncram_ahp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M1_rtl_0|altsyncram_ahp1:auto_generated                                      altsyncram_ahp1     work
      -      |altsyncram:M1_rtl_1|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M1_rtl_1                                                                     altsyncram          work
      -         |altsyncram_ahp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M1_rtl_1|altsyncram_ahp1:auto_generated                                      altsyncram_ahp1     work
      -      |altsyncram:M2_rtl_0|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M2_rtl_0                                                                     altsyncram          work
      -         |altsyncram_bhp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M2_rtl_0|altsyncram_bhp1:auto_generated                                      altsyncram_bhp1     work
      -      |altsyncram:M2_rtl_1|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M2_rtl_1                                                                     altsyncram          work
      -         |altsyncram_bhp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M2_rtl_1|altsyncram_bhp1:auto_generated                                      altsyncram_bhp1     work
      -      |altsyncram:M3_rtl_0|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M3_rtl_0                                                                     altsyncram          work
      -         |altsyncram_chp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M3_rtl_0|altsyncram_chp1:auto_generated                                      altsyncram_chp1     work
      -      |altsyncram:M3_rtl_1|                       0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M3_rtl_1                                                                     altsyncram          work
      -         |altsyncram_chp1:auto_generated|         0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:memory_map|altsyncram:M3_rtl_1|altsyncram_chp1:auto_generated                                      altsyncram_chp1     work
      -   |utoss_riscv:core|                             1541.5 (629.2)        1687.7 (645.6)                    176.7 (30.3)                                       30.5 (14.0)                       0.0 (0.0)             1826 (749)           1556 (466)                 0 (0)          0                  0      0           0     0             |top|utoss_riscv:core                                                                                              utoss_riscv         work
      -      |decode_stage:u_decode_stage|               308.5 (3.3)           398.3 (3.6)                       91.6 (0.2)                                         1.7 (0.0)                         0.0 (0.0)             88 (8)               992 (0)                    0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|decode_stage:u_decode_stage                                                                  decode_stage        work
      -         |Instruction_Decode:instruction_decode|  12.7 (8.3)            13.2 (8.8)                        0.5 (0.5)                                          0.0 (0.0)                         0.0 (0.0)             31 (23)              0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|decode_stage:u_decode_stage|Instruction_Decode:instruction_decode                            Instruction_Decode  work
      -            |ALUdecoder:instanceALUDec|           4.3 (4.3)             4.3 (4.3)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             8 (8)                0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|decode_stage:u_decode_stage|Instruction_Decode:instruction_decode|ALUdecoder:instanceALUDec  ALUdecoder          work
      -         |control_fsm:u_ctrl|                     3.4 (3.4)             3.4 (3.4)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             9 (9)                0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|decode_stage:u_decode_stage|control_fsm:u_ctrl                                               control_fsm         work
      -         |registerFile:RegFile|                   289.0 (289.0)         378.2 (378.2)                     90.8 (90.8)                                        1.7 (1.7)                         0.0 (0.0)             40 (40)              992 (992)                  0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|decode_stage:u_decode_stage|registerFile:RegFile                                             registerFile        work
      -      |execute_stage:u_execute_stage|             449.4 (95.0)          466.3 (102.1)                     28.7 (7.8)                                         11.9 (0.7)                        0.0 (0.0)             679 (178)            0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|execute_stage:u_execute_stage                                                                execute_stage       work
      -         |ALU:alu|                                354.4 (354.4)         364.2 (364.2)                     21.0 (21.0)                                        11.2 (11.2)                       0.0 (0.0)             501 (501)            0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|execute_stage:u_execute_stage|ALU:alu                                                        ALU                 work
      -      |fetch_stage:u_fetch_stage|                 72.9 (72.9)           91.5 (91.5)                       20.5 (20.5)                                        1.9 (1.9)                         0.0 (0.0)             125 (125)            97 (97)                    0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|fetch_stage:u_fetch_stage                                                                    fetch_stage         work
      -      |hazard_unit:u_hazard_unit|                 7.1 (7.1)             8.3 (8.3)                         1.3 (1.3)                                          0.1 (0.1)                         0.0 (0.0)             15 (15)              1 (1)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|hazard_unit:u_hazard_unit                                                                    hazard_unit         work
      -      |memory_stage:u_memory_stage|               12.9 (12.9)           14.2 (14.2)                       1.7 (1.7)                                          0.4 (0.4)                         0.0 (0.0)             27 (27)              0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|memory_stage:u_memory_stage                                                                  memory_stage        work
      -      |write_back_stage:u_write_back_stage|       61.6 (60.2)           63.6 (62.1)                       2.6 (2.4)                                          0.6 (0.6)                         0.0 (0.0)             143 (141)            0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|write_back_stage:u_write_back_stage                                                          write_back_stage    work
      -         |MemoryLoader:memory_loader|             1.3 (1.3)             1.5 (1.5)                         0.2 (0.2)                                          0.0 (0.0)                         0.0 (0.0)             2 (2)                0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|write_back_stage:u_write_back_stage|MemoryLoader:memory_loader                               MemoryLoader        work
      +Compilation Hierarchy Node                     ALMs needed [=A-B+C]  [A] ALMs used in final placement  [B] Estimate of ALMs recoverable by dense packing  [C] Estimate of ALMs unavailable  ALMs used for memory  Combinational ALUTs  Dedicated Logic Registers  I/O Registers  Block Memory Bits  M10Ks  DSP Blocks  Pins  Virtual Pins  Full Hierarchy Name                                                                    Entity Name         Library Name
      +|top                                           1908.5 (32.4)         2084.0 (34.2)                     188.5 (2.1)                                        13.0 (0.3)                        0.0 (0.0)             2401 (67)            1536 (0)                   0 (0)          16384              4      0           17    0             |top                                                                                   top                 work
      +   |memory_map:u_mem|                          53.4 (53.4)           55.0 (55.0)                       1.7 (1.7)                                          0.2 (0.2)                         0.0 (0.0)             80 (80)              10 (10)                    0 (0)          16384              4      0           0     0             |top|memory_map:u_mem                                                                  memory_map          work
      +      |altsyncram:M0_rtl_0|                    0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M0_rtl_0                                              altsyncram          work
      +         |altsyncram_9hp1:auto_generated|      0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M0_rtl_0|altsyncram_9hp1:auto_generated               altsyncram_9hp1     work
      +      |altsyncram:M1_rtl_0|                    0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M1_rtl_0                                              altsyncram          work
      +         |altsyncram_ahp1:auto_generated|      0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M1_rtl_0|altsyncram_ahp1:auto_generated               altsyncram_ahp1     work
      +      |altsyncram:M2_rtl_0|                    0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M2_rtl_0                                              altsyncram          work
      +         |altsyncram_bhp1:auto_generated|      0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M2_rtl_0|altsyncram_bhp1:auto_generated               altsyncram_bhp1     work
      +      |altsyncram:M3_rtl_0|                    0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M3_rtl_0                                              altsyncram          work
      +         |altsyncram_chp1:auto_generated|      0.0 (0.0)             0.0 (0.0)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             0 (0)                0 (0)                      0 (0)          4096               1      0           0     0             |top|memory_map:u_mem|altsyncram:M3_rtl_0|altsyncram_chp1:auto_generated               altsyncram_chp1     work
      +   |uart:u_uart|                               58.2 (0.0)            60.2 (0.0)                        2.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             109 (0)              60 (0)                     0 (0)          0                  0      0           0     0             |top|uart:u_uart                                                                       uart                work
      +      |uart_rx:uart_rx_inst|                   37.0 (37.0)           38.0 (38.0)                       1.0 (1.0)                                          0.0 (0.0)                         0.0 (0.0)             69 (69)              36 (36)                    0 (0)          0                  0      0           0     0             |top|uart:u_uart|uart_rx:uart_rx_inst                                                  uart_rx             work
      +      |uart_tx:uart_tx_inst|                   21.2 (21.2)           22.2 (22.2)                       1.0 (1.0)                                          0.0 (0.0)                         0.0 (0.0)             40 (40)              24 (24)                    0 (0)          0                  0      0           0     0             |top|uart:u_uart|uart_tx:uart_tx_inst                                                  uart_tx             work
      +   |uart_bus_master:u_master|                  346.3 (346.3)         399.6 (399.6)                     54.1 (54.1)                                        0.8 (0.8)                         0.0 (0.0)             520 (520)            224 (224)                  0 (0)          0                  0      0           0     0             |top|uart_bus_master:u_master                                                          uart_bus_master     work
      +   |utoss_riscv:core|                          1418.2 (167.9)        1535.1 (176.4)                    128.6 (13.6)                                       11.7 (5.0)                        0.0 (0.0)             1625 (197)           1242 (168)                 0 (0)          0                  0      0           0     0             |top|utoss_riscv:core                                                                  utoss_riscv         work
      +      |ALU:alu|                                344.0 (344.0)         353.1 (353.1)                     10.8 (10.8)                                        1.7 (1.7)                         0.0 (0.0)             483 (483)            0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|ALU:alu                                                          ALU                 work
      +      |ControlFSM:control_fsm|                 27.0 (27.0)           27.0 (27.0)                       0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             41 (41)              17 (17)                    0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|ControlFSM:control_fsm                                           ControlFSM          work
      +      |Instruction_Decode:instruction_decode|  48.2 (39.7)           51.6 (43.4)                       3.4 (3.7)                                          0.0 (0.0)                         0.0 (0.0)             93 (82)              0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|Instruction_Decode:instruction_decode                            Instruction_Decode  work
      +         |ALUdecoder:instanceALUDec|           8.2 (8.2)             8.2 (8.2)                         0.0 (0.0)                                          0.0 (0.0)                         0.0 (0.0)             11 (11)              0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|Instruction_Decode:instruction_decode|ALUdecoder:instanceALUDec  ALUdecoder          work
      +      |MemoryLoader:MemLoad|                   13.8 (13.8)           14.8 (14.8)                       1.0 (1.0)                                          0.0 (0.0)                         0.0 (0.0)             34 (34)              0 (0)                      0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|MemoryLoader:MemLoad                                             MemoryLoader        work
      +      |fetch:fetch|                            65.0 (65.0)           69.4 (69.4)                       4.7 (4.7)                                          0.3 (0.3)                         0.0 (0.0)             97 (97)              65 (65)                    0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|fetch:fetch                                                      fetch               work
      +      |registerFile:RegFile|                   752.3 (752.3)         842.7 (842.7)                     95.1 (95.1)                                        4.7 (4.7)                         0.0 (0.0)             680 (680)            992 (992)                  0 (0)          0                  0      0           0     0             |top|utoss_riscv:core|registerFile:RegFile                                             registerFile        work
    3. Timing

      @@ -3,51 +3,51 @@
       ------------------------------------------------------------
       
       Type  : Slow 1100mV 85C Model Setup 'CLOCK_50'
      -Slack : 2.419
      +Slack : 4.720
       TNS   : 0.000
       
       Type  : Slow 1100mV 85C Model Hold 'CLOCK_50'
      -Slack : 0.293
      +Slack : 0.338
       TNS   : 0.000
       
       Type  : Slow 1100mV 85C Model Minimum Pulse Width 'CLOCK_50'
      -Slack : 8.868
      +Slack : 8.878
       TNS   : 0.000
       
       Type  : Slow 1100mV 0C Model Setup 'CLOCK_50'
      -Slack : 2.786
      +Slack : 4.928
       TNS   : 0.000
       
       Type  : Slow 1100mV 0C Model Hold 'CLOCK_50'
      -Slack : 0.254
      +Slack : 0.315
       TNS   : 0.000
       
       Type  : Slow 1100mV 0C Model Minimum Pulse Width 'CLOCK_50'
      -Slack : 8.826
      +Slack : 8.831
       TNS   : 0.000
       
       Type  : Fast 1100mV 85C Model Setup 'CLOCK_50'
      -Slack : 9.385
      +Slack : 10.546
       TNS   : 0.000
       
       Type  : Fast 1100mV 85C Model Hold 'CLOCK_50'
      -Slack : 0.198
      +Slack : 0.177
       TNS   : 0.000
       
       Type  : Fast 1100mV 85C Model Minimum Pulse Width 'CLOCK_50'
      -Slack : 8.783
      +Slack : 8.782
       TNS   : 0.000
       
       Type  : Fast 1100mV 0C Model Setup 'CLOCK_50'
      -Slack : 10.432
      +Slack : 11.537
       TNS   : 0.000
       
       Type  : Fast 1100mV 0C Model Hold 'CLOCK_50'
      -Slack : 0.175
      +Slack : 0.169
       TNS   : 0.000
       
       Type  : Fast 1100mV 0C Model Minimum Pulse Width 'CLOCK_50'
      -Slack : 8.777
      +Slack : 8.775
       TNS   : 0.000
       
       ------------------------------------------------------------

Comparing synthesis results from main branch vs. this PR

LEDR_ADDRESS: read_data = {22'b0, LEDR};
DBG_PC_ADDR: read_data = dbg_pc;
default: begin
if (dbg_reg_hit && (dbg_reg_idx < 5'd32)) read_data = dbg_regs[dbg_reg_idx];
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think there's a construct that looks like case (address) inside that allows specifying ranges of values in the case's arms. I think it should be synthesizable, not sure how efficient though.

Comment thread src/uart.sv
@@ -0,0 +1,63 @@
`timescale 1ns / 1ps
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably better to move all uart-related modules into src/uart/. I think eventually we will try to keep the peripherals in a separate repo entirely, but its fine for now.

@TheDeepestSpace TheDeepestSpace changed the base branch from main to multicycle May 18, 2026 21:08
Comment thread src/uart_bus_master.sv Outdated
, output logic [3:0] bus_write_enable
, input wire [31:0] bus_read_data
, output logic hold_core
// , input logic [31:0] dbg_regs [0:31]
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fanout from these was pretty drastic downstream; @RunzeZhu28 if you get a chance to take a look at how we can optimize this would be sick

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement UART peripheral

5 participants