前回の続きで,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 ------------------------------------------------------------------- -------------------