nia_req: out std_ulogic;
nia: out std_ulogic_vector(63 downto 0);
msr_o: out std_ulogic_vector(63 downto 0);
- insn: out std_ulogic_vector(31 downto 0)
+ insn: out std_ulogic_vector(31 downto 0);
+ ldst_req: out std_ulogic;
+ ldst_addr: out std_ulogic_vector(63 downto 0)
);
end core;
msr_o <= msr;
insn <= icache_to_decode1.insn;
nia_req <= icache_to_decode1.valid and fetch1_to_icache.sequential;
+ -- hmmm....
+ ldst_req <= execute1_to_loadstore1.valid;
+ ldst_addr <= std_ulogic_vector(unsigned(execute1_to_loadstore1.addr1) +
+ unsigned(execute1_to_loadstore1.addr2))
+ when execute1_to_loadstore1.valid = '1' else (others => '0');
debug_0: entity work.core_debug
-- for verilator debugging
nia_req: out std_ulogic;
nia: out std_ulogic_vector(63 downto 0);
- insn: out std_ulogic_vector(31 downto 0)
+ msr_o: out std_ulogic_vector(63 downto 0);
+ insn: out std_ulogic_vector(31 downto 0);
+ ldst_req: out std_ulogic;
+ ldst_addr: out std_ulogic_vector(63 downto 0)
);
end core;
nia_req: out std_ulogic;
nia: out std_ulogic_vector(63 downto 0);
msr_o: out std_ulogic_vector(63 downto 0);
- insn: out std_ulogic_vector(31 downto 0)
-
+ insn: out std_ulogic_vector(31 downto 0);
+ ldst_req: out std_ulogic;
+ ldst_addr: out std_ulogic_vector(63 downto 0)
);
end entity toplevel;
nia_req => nia_req,
nia => nia,
msr_o => msr_o,
- insn => insn
+ insn => insn,
+ ldst_req => ldst_req,
+ ldst_addr => ldst_addr
);
end architecture behaviour;
nia_req: out std_ulogic;
nia: out std_ulogic_vector(63 downto 0);
msr_o: out std_ulogic_vector(63 downto 0);
- insn: out std_ulogic_vector(31 downto 0)
+ insn: out std_ulogic_vector(31 downto 0);
+ ldst_req: out std_ulogic;
+ ldst_addr: out std_ulogic_vector(63 downto 0)
);
end entity soc;
nia_req: out std_ulogic;
msr_o: out std_ulogic_vector(63 downto 0);
nia: out std_ulogic_vector(63 downto 0);
- insn: out std_ulogic_vector(31 downto 0)
+ insn: out std_ulogic_vector(31 downto 0);
+ ldst_req: out std_ulogic;
+ ldst_addr: out std_ulogic_vector(63 downto 0)
);
end component;
begin
nia_req => nia_req,
nia => nia,
msr_o => msr_o,
- insn => insn
+ insn => insn,
+ ldst_req => ldst_req,
+ ldst_addr => ldst_addr
);
end generate;
#ifdef BRAM_DEBUG
if (top->nia_req) {
- fprintf(dump, "pc %8x insn %8x msr %16lx\n",
+ fprintf(dump, "pc %8x insn %8x msr %16lx",
top->nia, top->insn, top->msr_o);
}
+ if (top->ldst_req) {
+ if (!top->nia_req) {
+ fprintf(dump, "pc %-8s insn %-8s msr %-16s", "", "", "");
+ }
+ fprintf(dump, " ldst %16lx", top->ldst_addr);
+ }
+ if (top->ldst_req || top->nia_req) {
+ fprintf(dump, "\n");
+ }
if (top->bram_we) {
fprintf(dump, " " \
"wr @ %08x do %16lx sel %02x ",