前回の続きで,RVCを含んだ命令キャッシュブロックから命令を正しく切り出す方法について、まだちゃんとした実装や検証にはなっていないのだけれど,Vivadoで論理合成してクリティカルパスを確認していく.
命令の切り出しの部分と,最終的な命令をリネームステージに渡す論理を組み合わせた結果のクリティカルパスは以下のようになった:
命令バッファへの到達自体は非常に余裕をもってタイミングMetしたが,肝心の命令バッファへから命令を取り出してリネームステージへ渡す論理が不完全で,まだ完全なタイミング検証になっているとは言い難いので,このあたりを修正していこうと思う.
Slack (MET) : 7.437ns (required time - arrival time)
Source: u_inst_queue/r_inptr_reg[0]/C
(rising edge-triggered cell FDCE clocked by i_clk {rise@0.000ns fall@5.000ns period=10.000ns})
Destination: u_inst_queue/r_inptr_reg[0]/CE
(rising edge-triggered cell FDCE clocked by i_clk {rise@0.000ns fall@5.000ns period=10.000ns})
Path Group: i_clk
Path Type: Setup (Max at Slow Process Corner)
Requirement: 10.000ns (i_clk rise@10.000ns - i_clk rise@0.000ns)
Data Path Delay: 2.236ns (logic 0.742ns (33.184%) route 1.494ns (66.816%))
Logic Levels: 3 (LUT2=1 LUT3=1 LUT5=1)
Clock Path Skew: -0.145ns (DCD - SCD + CPR)
Destination Clock Delay (DCD): 1.693ns = ( 11.693 - 10.000 )
Source Clock Delay (SCD): 2.001ns
Clock Pessimism Removal (CPR): 0.163ns
Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
Total System Jitter (TSJ): 0.071ns
Total Input Jitter (TIJ): 0.000ns
Discrete Jitter (DJ): 0.000ns
Phase Error (PE): 0.000ns
Location Delay type Incr(ns) Path(ns) Netlist Resource(s)
------------------------------------------------------------------- -------------------
(clock i_clk rise edge) 0.000 0.000 r
0.000 0.000 r i_clk (IN)
net (fo=0) 0.000 0.000 i_clk
IBUF (Prop_ibuf_I_O) 0.769 0.769 r i_clk_IBUF_inst/O
net (fo=1, unplaced) 0.571 1.341 i_clk_IBUF
BUFG (Prop_bufg_I_O) 0.076 1.417 r i_clk_IBUF_BUFG_inst/O
net (fo=3, unplaced) 0.584 2.001 u_inst_queue/i_clk
FDCE r u_inst_queue/r_inptr_reg[0]/C
------------------------------------------------------------------- -------------------
FDCE (Prop_fdce_C_Q) 0.341 2.342 f u_inst_queue/r_inptr_reg[0]/Q
net (fo=5, unplaced) 0.547 2.889 u_inst_queue/r_inptr[0]
LUT3 (Prop_lut3_I0_O) 0.199 3.088 f u_inst_queue/o_full_INST_0/O
net (fo=2, unplaced) 0.312 3.400 w_inst_buf_full
LUT2 (Prop_lut2_I1_O) 0.105 3.505 r u_inst_queue_i_2/O
net (fo=1, unplaced) 0.301 3.806 u_inst_queue/i_push
LUT5 (Prop_lut5_I4_O) 0.097 3.903 r u_inst_queue/r_inptr[2]_i_1/O
net (fo=3, unplaced) 0.334 4.237 u_inst_queue/r_inptr[2]_i_1_n_0
FDCE r u_inst_queue/r_inptr_reg[0]/CE
------------------------------------------------------------------- -------------------