📄 tech_map.vhd
字号:
port map (rst, clk, clkn, rfi, rfo); end generate; atm2 : if TARGET_TECH = atc25 generate u0 : atc25_regfile_iu generic map (rftype, abits, dbits, words) port map (rst, clk, clkn, rfi, rfo); end generate; atm3 : if TARGET_TECH = atc35 generate u0 : atc35_regfile generic map (abits, dbits, words) port map (rst, clk, clkn, rfi, rfo); end generate; umc0 : if TARGET_TECH = fs90 generate u0 : fs90_regfile generic map (abits, dbits, words) port map (rst, clk, clkn, rfi, rfo); end generate; umc1 : if TARGET_TECH = umc18 generate u0 : umc18_regfile generic map (abits, dbits, words) port map (rst, clk, clkn, rfi, rfo); end generate; xcv : if TARGET_TECH = virtex generate u0 : virtex_regfile generic map (rftype, abits, dbits, words) port map (rst, clk , clkn , rfi, rfo); end generate; xc2v : if TARGET_TECH = virtex2 generate u0 : virtex2_regfile generic map (rftype, abits, dbits, words) port map (rst, clk , clkn , rfi, rfo); end generate; sim : if TARGET_TECH = gen generate u0 : generic_regfile_iu generic map (rftype, abits, dbits, words) port map (rst, clk , clkn , rfi, rfo); end generate; tsmc : if TARGET_TECH = tsmc25 generate u0 : tsmc25_regfile_iu generic map (abits, dbits, words) port map (rst, clk , clkn , rfi, rfo); end generate; proa : if TARGET_TECH = proasic generate u0 : proasic_regfile_iu generic map (rftype, abits, dbits, words) port map (rst, clk , clkn , rfi, rfo); end generate; axc : if TARGET_TECH = axcel generate u0 : axcel_regfile_iu generic map (rftype, abits, dbits, words) port map (rst, clk , clkn , rfi, rfo); end generate; end generate;end;-- Parallel FPU/CP regfileLIBRARY ieee;use IEEE.std_logic_1164.all;use work.leon_target.all;use work.leon_config.all;use work.leon_iface.all;use work.tech_atc18.all;use work.tech_atc25.all;use work.tech_atc35.all;use work.tech_fs90.all;use work.tech_umc18.all;use work.tech_generic.all;use work.tech_virtex.all;use work.tech_virtex2.all;use work.tech_tsmc25.all;use work.tech_proasic.all;use work.tech_axcel.all;entity regfile_cp is generic ( abits : integer := 4; dbits : integer := 32; words : integer := 16 ); port ( rst : in std_logic; clk : in clk_type; rfi : in rf_cp_in_type; rfo : out rf_cp_out_type);end;architecture rtl of regfile_cp issignal vcc : std_logic;begin vcc <= '1'; inf : if INFER_REGF generate u0 : generic_regfile_cp generic map (abits, dbits, words) port map (rst, clk, rfi, rfo); end generate; ninf : if not INFER_REGF generate atm1 : if TARGET_TECH = atc18 generate u0 : atc18_regfile_cp generic map (abits, dbits, words) port map (rst, clk, rfi, rfo); end generate; atm2 : if TARGET_TECH = atc25 generate u0 : atc25_regfile_cp generic map (abits, dbits, words) port map (rst, clk, rfi, rfo); end generate; atm3 : if TARGET_TECH = atc35 generate u0 : atc35_regfile_cp generic map (abits, dbits, words) port map (rst, clk, rfi, rfo); end generate;-- umc0 : if TARGET_TECH = fs90 generate -- u0 : fs90_regfile_cp generic map (abits, dbits, words)-- port map (rst, clk, rfi, rfo);-- end generate;-- umc1 : if TARGET_TECH = umc18 generate -- u0 : umc18_regfile_cp generic map (abits, dbits, words)-- port map (rst, clk, rfi, rfo);-- end generate; xcv : if TARGET_TECH = virtex generate u0 : virtex_regfile_cp generic map (abits, dbits, words) port map (rst, clk , rfi, rfo); end generate; xc2v : if TARGET_TECH = virtex2 generate u0 : virtex2_regfile_cp generic map (abits, dbits, words) port map (rst, clk , rfi, rfo); end generate; tsmc : if TARGET_TECH = tsmc25 generate u0 : tsmc25_regfile_cp generic map (abits, dbits, words) port map (rst, clk , rfi, rfo); end generate; sim : if TARGET_TECH = gen generate u0 : generic_regfile_cp generic map (abits, dbits, words) port map (rst, clk , rfi, rfo); end generate; proa : if TARGET_TECH = proasic generate u0 : proasic_regfile_cp generic map (abits, dbits, words) port map (rst, clk , rfi, rfo); end generate; axc : if TARGET_TECH = axcel generate u0 : axcel_regfile_cp generic map (abits, dbits, words) port map (rst, clk , rfi, rfo); end generate; end generate;end;-- boot-promLIBRARY ieee;use IEEE.std_logic_1164.all;use work.leon_target.all;use work.leon_config.all;use work.tech_atc35.all;use work.tech_generic.all;use work.tech_virtex.all;entity bprom is port ( clk : in std_logic; cs : in std_logic; addr : in std_logic_vector(31 downto 0); data : out std_logic_vector(31 downto 0) );end;architecture rtl of bprom iscomponent gen_bprom port ( clk : in std_logic; csn : in std_logic; addr : in std_logic_vector (29 downto 0); data : out std_logic_vector (31 downto 0));end component;begin b0: if INFER_ROM generate u0 : gen_bprom port map (clk, cs, addr(31 downto 2), data); end generate; b1: if (not INFER_ROM) and ((TARGET_TECH = virtex) or (TARGET_TECH = virtex2)) generate u0 : virtex_bprom port map (clk, addr(31 downto 2), data); end generate;end;-- multiplier library ieee;use ieee.std_logic_1164.all;use work.leon_target.all;use work.leon_config.all;use work.leon_iface.all;use work.multlib.all;use work.tech_generic.all;entity hw_smult is generic ( abits : integer := 10; bbits : integer := 8 ); port ( clk : in clk_type; holdn: in std_logic; a : in std_logic_vector(abits-1 downto 0); b : in std_logic_vector(bbits-1 downto 0); c : out std_logic_vector(abits+bbits-1 downto 0) ); end;architecture rtl of hw_smult isbegin inf : if INFER_MULT generate u0 : generic_smult generic map (abits => abits, bbits => bbits) port map (a, b, c); end generate; mg : if not INFER_MULT generate m1717 : if (abits = 17) and (bbits = 17) generate u0 : mul_17_17 port map (clk, holdn, a, b, c); end generate; m339 : if (abits = 33) and (bbits = 9) generate u0 : mul_33_9 port map (a, b, c); end generate; m3317 : if (abits = 33) and (bbits = 17) generate u0 : mul_33_17 port map (a, b, c); end generate; m3333 : if (abits = 33) and (bbits = 33) generate u0 : mul_33_33 port map (a, b, c); end generate; end generate;end;-- input padlibrary IEEE;use IEEE.std_logic_1164.all;use work.leon_target.all;use work.leon_config.all;use work.tech_atc18.all;use work.tech_atc25.all;use work.tech_atc35.all;use work.tech_fs90.all;use work.tech_umc18.all;use work.tech_generic.all;use work.tech_tsmc25.all;entity inpad is port (pad : in std_logic; q : out std_logic); end; architecture rtl of inpad isbegin inf : if INFER_PADS or (TARGET_TECH = gen) or (TARGET_TECH = virtex) or (TARGET_TECH = proasic) or (TARGET_TECH = virtex2) or (TARGET_TECH = axcel) generate ginpad0 : geninpad port map (q => q, pad => pad); end generate; ninf : if not INFER_PADS generate ip0 : if TARGET_TECH = atc18 generate ipx : atc18_inpad port map (q => q, pad => pad); end generate; ip1 : if TARGET_TECH = atc25 generate ipx : atc25_inpad port map (q => q, pad => pad); end generate; ip2 : if TARGET_TECH = atc35 generate ipx : atc35_inpad port map (q => q, pad => pad); end generate; ip3 : if TARGET_TECH = fs90 generate ipx : fs90_inpad port map (q => q, pad => pad); end generate; ip4 : if TARGET_TECH = umc18 generate ipx : umc18_inpad port map (q => q, pad => pad); end generate; ip5 : if TARGET_TECH = tsmc25 generate ipx : tsmc25_inpad port map (q => q, pad => pad); end generate; end generate;end;-- input schmitt padlibrary IEEE;use IEEE.std_logic_1164.all;use work.leon_target.all;use work.leon_config.all;use work.tech_atc18.all;use work.tech_atc25.all;use work.tech_atc35.all;use work.tech_fs90.all;use work.tech_umc18.all;use work.tech_generic.all;use work.tech_tsmc25.all;entity smpad is port (pad : in std_logic; q : out std_logic); end; architecture rtl of smpad isbegin inf : if INFER_PADS or (TARGET_TECH = gen) or (TARGET_TECH = virtex) or (TARGET_TECH = proasic) or (TARGET_TECH = virtex2) or (TARGET_TECH = axcel) generate gsmpad0 : gensmpad port map (pad => pad, q => q); end generate; ninf : if not INFER_PADS generate sm0 : if TARGET_TECH = atc18 generate smx : atc18_smpad port map (q => q, pad => pad); end generate; sm1 : if TARGET_TECH = atc25 generate smx : atc25_smpad port map (q => q, pad => pad); end generate; sm2 : if TARGET_TECH = atc35 generate smx : atc35_smpad port map (q => q, pad => pad); end generate; sm3 : if TARGET_TECH = fs90 generate smx : fs90_smpad port map (q => q, pad => pad); end generate; sm4 : if TARGET_TECH = umc18 generate smx : umc18_smpad port map (q => q, pad => pad); end generate; sm5 : if TARGET_TECH = tsmc25 generate smx : tsmc25_smpad port map (q => q, pad => pad); end generate; end generate;end;-- output padslibrary IEEE;use IEEE.std_logic_1164.all;use work.leon_target.all;use work.leon_config.all;use work.tech_atc25.all;use work.tech_atc35.all;use work.tech_fs90.all;use work.tech_umc18.all;use work.tech_generic.all;use work.tech_tsmc25.all;entity outpad is generic (drive : integer := 1); port (d : in std_logic; pad : out std_logic);end; architecture rtl of outpad isbegin inf : if INFER_PADS or (TARGET_TECH = gen) or (TARGET_TECH = virtex) or (TARGET_TECH = proasic) or (TARGET_TECH = virtex2) or (TARGET_TECH = axcel) generate goutpad0 : genoutpad port map (d => d, pad => pad); end generate; ninf : if not INFER_PADS generate op1 : if (TARGET_TECH = atc25) or (TARGET_TECH = atc18) generate opx : atc25_outpad generic map (drive) port map (d => d, pad => pad); end generate; op2 : if TARGET_TECH = atc35 generate opx : atc35_outpad generic map (drive) port map (d => d, pad => pad); end generate; op3 : if TARGET_TECH = fs90 generate opx : fs90_outpad generic map (drive) port map (d => d, pad => pad); end generate; op4 : if TARGET_TECH = umc18 generate opx : umc18_outpad generic map (drive) port map (d => d, pad => pad); end generate; op5 : if TARGET_TECH = tsmc25 generate opx : tsmc25_outpad generic map (drive) port map (d => d, pad => pad); end generate; end generate;end;-- tri-state output pads with pull-uplibrary IEEE;use IEEE.std_logic_1164.all;use work.leon_target.all;use work.leon_config.all;use work.tech_atc25.all;use work.tech_atc35.all;use work.tech_fs90.all;use work.tech_umc18.all;use work.tech_generic.all;use work.tech_tsmc25.all;entity toutpadu is generic (drive : integer := 1); port (d, en : in std_logic; pad : out std_logic);end; architecture rtl of toutpadu isbegin inf : if INFER_PADS or (TARGET_TECH = gen) or (TARGET_TECH = virtex) or (TARGET_TECH = proasic) or (TARGET_TECH = virtex2) or (TARGET_TECH = axcel) generate giop0 : gentoutpadu port map (d => d, en => en, pad => pad); end generate; ninf : if not INFER_PADS generate atc25t : if (TARGET_TECH = atc25) or (TARGET_TECH = atc18) generate p0 : atc25_toutpadu generic map (drive) port map (d => d, en => en, pad => pad); end generate; atc35t : if TARGET_TECH = atc35 generate p0 : atc35_toutpadu generic map (drive) port map (d => d, en => en, pad => pad);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -