u@home:~$

  • axi channel valid control

    原来我是用下面这种方式控制axi channel里的valid,比如ar_valid。 但当结束信号ext_biu_ar_ready和开始信号arb_rd_val_q一起high起来的时候会有问题,后面还需要补偿下 arb_rd_val_q 这个scenario 2我也不记得当时什么场景了, 好像不太对,先这么放着了。 // scenario 0 // // arb_rd_val_q : _-_____ // ext_biu_ar_ready : _____-_ // // ar_valid_in : _----__ // ar_valid_q : __----_ // biu_ext_ar_valid : _-----_ // scenario 1 // // arb_rd_val_q : _-_____ // ext_biu_ar_ready : _-_____ // // ar_valid_in : _______ //...

  • verilog 里 order of priority 实现的方式

    a的priority最高。 wire event_a; wire event_b; wire event_c; wire event_d; wire a_select; wire b_select; wire c_select; wire d_select; assign a_select = event_a; assign b_select = ~event_a & event_b; assign c_select = ~event_a & ~event_b & event_c; assign d_select = ~event_a & ~event_b & ~event_c & event_d; 如果2进制编码的话,可以这样,3bit没用完,就不搞太多x_select。 wire [2:0] encode; assign...

  • 折腾了下IFU

    IFU decode后的一堆_d的信号全给EXU了,这回把这部分信号放在ifu_dec里,给EXU的基本都是_e的信号。 register file还是放在EXU里。 ifu_exu_valid_d变成了在ifu fdp和dec之间的fdp_dec_inst_vld_kill_d,表示这条指令valid并且没有被kill_d。 cpu7_ifu_dec里也就放了些d2e的寄存器,本来这些是在cpu7_exu_ecl里的。 这样exu_ecl就看起来轻松了不少,exu接收_e的信号。 不过将来实现更多的机制,不知道ifu是不是又要折腾。 进到exu的_e信号,基本也都是先进到exu_ecl里,因为可能有一些简单的逻辑要处理,然后由ecl转发给各个功能模块alu lsu bru等。 IFU IFU can be stalled through exu_ifu_stall_req as many cycles as it is pulled high. When IFU is stalled, pc_bf keeps fetching the same address, pc_f : ifu_pcbf_sel_old_bf_l. kill_f is not effective during exu_ifu_stall_req. pc_f2d_reg.en —\ valid_d_reg.en \...