📄 wallace.pl
字号:
-- $(lic)
-- $(help_generic)
-- $(help_local)
library ieee;
use ieee.std_logic_1164.all;
use work.config.all;
use work.iface.all;
use work.target.all;
use work.armlib_iuiface.all;
use work.armlib_int.all;
entity armiu_imstg is
port (
rst : in std_logic;
clk : in clk_type;
imstgi : in aii_atyp_imstg_in;
imstgo : out aii_atyp_imstg_out
);
end armiu_imstg;
architecture rtl of armiu_imstg is
type imstg_tmp_type is record
valid : std_logic;
addrvir_4 : std_logic_vector(31 downto 0); -- virtual pc+4
addrphy : std_logic_vector(31 downto 0); -- pc after translation
imstgo : aii_atyp_imstg_out;
end record;
type imstg_reg_type is record
branch : std_logic;
valid : std_logic;
addrvir : std_logic_vector(31 downto 0); -- virtual pc
end record;
type imstg_dbg_type is record
dummy : std_logic;
-- pragma translate_off
dbg : imstg_tmp_type;
-- pragma translate_on
end record;
signal r, c : imstg_reg_type;
signal rdbg, cdbg : imstg_dbg_type;
begin
p0: process (clk, rst, r, imstgi )
variable v : imstg_reg_type;
variable t : imstg_tmp_type;
variable vdbg : imstg_dbg_type;
begin
-- $(init(t:imstg_tmp_type))
v := r;
t.addrvir_4 := r.addrvir;
t.valid := r.valid;
ain_incdec(r.addrvir(31 downto 2),t.addrvir_4(31 downto 2),'1','1');
if imstgi.pstate.holdn_r = '1' and imstgi.pstate.nextinsn_v = '1' then
v.addrvir := t.addrvir_4;
end if;
if imstgi.flush_v = '1' then
v.valid := '0';
t.valid := '0';
end if;
if imstgi.branch_v = '1' then
v.addrvir := imstgi.addrvir_v;
v.valid := '1';
end if;
-- reset
if ( rst = '0' ) then
v.addrvir := (others => '0');
v.valid := '1';
end if;
-- do some mmu translation later:
t.imstgo.toFE_addrphy_v := r.addrvir;
t.imstgo.toFE_addrvir_v := r.addrvir;
t.imstgo.toFE_branch_v := r.branch;
t.imstgo.toFE_addrvalid_v := t.valid;
c <= v;
imstgo <= t.imstgo;
-- pragma translate_off
vdbg := rdbg;
vdbg.dbg := t;
cdbg <= vdbg;
-- pragma translate_on end process p0;
end process p0;
pregs : process (clk, c)
begin
if rising_edge(clk) then
r <= c;
-- pragma translate_off
rdbg <= cdbg;
-- pragma translate_on
end if;
end process;
end rtl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -