1. 09 11月, 2022 6 次提交
    • L
      ftq, icache: fix compilation errors · fd0ecf27
      Lingrui98 提交于
      fd0ecf27
    • J
      ftq: copy bpu bypass write registers · f22cf846
      Jenius 提交于
      * FtqToICache add bypass write signal and use bypass signal
      f22cf846
    • J
      IFU/IPrefetch/ReplacePipe: adjust meta/data access · 2da4ac8c
      Jenius 提交于
      * IFU: ignore ICache access bundle
      
      * ICacheMainPipe: expand meta/data access output to 4 identical vector
      output, each output is connected to a copied register trigger by FTQ
      requests
      
      * IPrefetch/ReplacePipe: expand meta/data access outpu to 4 indentical
      vector output, and each output is triggered by the same signal group
      2da4ac8c
    • J
      ICache: separate meta/data to 4 2-way banks · adc7b752
      Jenius 提交于
      * add ICachPartWayArray to wrap a part-way module
      
      * SRAM array array_0 array_1: width × 1/4 and depth stay unchanged
      adc7b752
    • J
      [WIP]FTQ: add icache req port · c5c5edae
      Jenius 提交于
      * separate ifu req and icache req for timing optimization
      
      * both ifu ftq_req_ready and icache ftq_req_ready depend on each other
      
      * ifu and icache has pc_mem register
      
      [WIP]ICacheMainPipe: add copied registers
      
      [WIP]ftq: read ftq_pc_mem one cycle ahead, reqs to be copied
      
      [WIP] FTQ:  delete outside bypass
      c5c5edae
    • Y
      ftq,ctrl: add copies for pc and jalr_target data modules (#1661) · 700e90ab
      Yinan Xu 提交于
      * ftq, ctrl: remove pc/target backend read ports, and remove redirectGen in ftq
      
      * ctrl: add data modules for pc and jalr_target
      
      This commit adds two data modules for pc and jalr_target respectively.
      They are the same as data modules in frontend. Should benefit timing.
      
      * jump: reduce pc and jalr_target read latency
      
      * ftq: add predecode redirect update target interface, valid only on ifuRedirect
      
      * ftq, ctrl: add second write port logic of jalrTargetMem, and delay write of pc/target mem for two cycles
      Co-authored-by: NLingrui98 <goulingrui19s@ict.ac.cn>
      700e90ab
  2. 08 11月, 2022 2 次提交
  3. 02 11月, 2022 21 次提交
  4. 01 11月, 2022 1 次提交
  5. 31 10月, 2022 1 次提交
  6. 29 10月, 2022 1 次提交
  7. 21 10月, 2022 1 次提交
  8. 20 10月, 2022 1 次提交
    • G
      Add FST waveform support (#1804) · 40f31726
      good-circle 提交于
      Usage:
      
      When make emu, please use EMU_TRACE=1, EMU_TRACE=vcd or EMU_TRACE=VCD
      to dump waveform of vcd format, and use EMU_TRACE=fst or EMU_TRACE=FST
      to dump waveform of fst format.
      
      When use xiangshan.py, please add --trace to dump waveform of vcd format,
      and add --trace-fst to dump waveform of fst format.
      40f31726
  9. 15 10月, 2022 1 次提交
  10. 13 10月, 2022 1 次提交
  11. 30 9月, 2022 2 次提交
    • H
      Sync timing modification of #1681 and #1793 (#1793) · 03efd994
      happy-lx 提交于
      * ldu: optimize dcache hitvec wiring
      
      In previous design, hitvec is generated in load s1, then send to dcache
      and lsu (rs) side separately. As dcache and lsu (rs side) is far in real
      chip, it caused severe wiring problem.
      
      Now we generate 2 hitvec in parallel:
      
      * hitvec 1 is generated near dcache.
      To generate that signal, paddr from dtlb is sent to dcache in load_s1
      to geerate hitvec. The hitvec is then sent to dcache to generate
      data array read_way_en.
      
      * hitvec 2 is generated near lsu and rs in load_s2, tag read result
      from dcache, as well as coh_state, is sent to lsu in load_s1,
      then it is used to calcuate hitvec in load_s2.  hitvec 2 is used
      to generate hit/miss signal used by lsu.
      
      It should fix the wiring problem caused by hitvec
      
      * ldu: opt loadViolationQuery.resp.ready timing
      
      An extra release addr register is added near lsu to speed up the
      generation of loadViolationQuery.resp.ready
      
      * l1tlb: replace NormalPage data module and add duplicate resp result
      
      data module:
      add BankedSyncDataMoudleWithDup data module:
      divided the data array into banks and read as Async, bypass write data.
      RegNext the data result * #banks. choose from the chosen data.
      
      duplicate:
      duplicate the chosen data and return to outside(tlb).
      tlb return (ppn+perm) * #DUP to outside (for load unit only)
      
      TODO: load unit use different tlb resp result to different module.
      one for lsq, one for dcache.
      
      * l1tlb: Fix wrong vidx_bypass logic after using duplicate data module
      
      We use BankedSyncDataMoudleWithDup instead of SyncDataModuleTemplate,
      whose write ports are not Vec.
      Co-authored-by: NWilliam Wang <zeweiwang@outlook.com>
      Co-authored-by: NZhangZifei <1773908404@qq.com>
      Co-authored-by: Ngood-circle <fenghaoyuan19@mails.ucas.ac.cn>
      03efd994
    • H
      AtomicsUnit: refactor FSM in AtomicsUnit (#1792) · 52180d7e
      happy-lx 提交于
      * AtomicsUnit: refactor FSM in AtomicsUnit
      
      * send tlb req and sbuffer flush req at the same time
      * remove s_cache_resp_latch state
      * change `data_valid` logic: do not send dcache req until `data_valid`
      is true
      
      * Atomicsunit: add `s_cache_resp_latch` state back
      52180d7e
  12. 24 9月, 2022 1 次提交
  13. 23 9月, 2022 1 次提交