always @ (posedge clk) begin
// 复位
if (rst == `RstEnable || jtag_reset_flag_i == 1'b1) begin
pc_o <= `CpuResetAddr;
// 跳转
end else if (jump_flag_i == `JumpEnable) begin
pc_o <= jump_addr_i;
// 暂停
end else if (hold_flag_i >= `Hold_Pc) begin
pc_o <= pc_o;
// 地址加4
end else begin
pc_o <= pc_o + 4'h4;
end
end
https://github.com/cisen/ics-pa-gitbook
riscv1
整个链条是如何的?
mill -i __.test.runMain Sim.SimTopMain -td ./build
,注意scala里面也需要构建difftest接口REF_SO := $(NEMU_HOME)/build/riscv64-nemu-interpreter-so
,并构建出emu程序,该程序可以直接运行裸机(AM)程序,ThirdParty\difftest\Makefile
。riscv指令集是如何从软件传递给verilator,然后到verilog的??