📄 orca_ecmem.vhd
字号:
tipd_ada11 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada10 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada9 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada8 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada7 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada6 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada5 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada4 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada3 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada2 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ada0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia17 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia16 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia15 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia14 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia13 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia12 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia11 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia10 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia9 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia8 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia7 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia6 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia5 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia4 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia3 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia2 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dia0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_clka : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_cea : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_wea : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_csa0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_csa1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_csa2 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_rsta : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb12 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb11 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb10 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb9 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb8 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb7 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb6 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb5 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb4 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb3 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb2 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_adb0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib17 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib16 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib15 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib14 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib13 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib12 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib11 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib10 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib9 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib8 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib7 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib6 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib5 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib4 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib3 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib2 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_dib0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_clkb : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ceb : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_web : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_csb0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_csb1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_csb2 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_rstb : VitalDelayType01 := (0.0 ns, 0.0 ns); -- propagation delays -- setup and hold constraints -- pulse width constraints tperiod_clka : VitalDelayType := 0.001 ns; tpw_clka_posedge : VitalDelayType := 0.001 ns; tpw_clka_negedge : VitalDelayType := 0.001 ns; tperiod_clkb : VitalDelayType := 0.001 ns; tpw_clkb_posedge : VitalDelayType := 0.001 ns; tpw_clkb_negedge : VitalDelayType := 0.001 ns); PORT( dia0, dia1, dia2, dia3, dia4, dia5, dia6, dia7, dia8 : in std_logic := 'X'; dia9, dia10, dia11, dia12, dia13, dia14, dia15, dia16, dia17 : in std_logic := 'X'; ada0, ada1, ada2, ada3, ada4, ada5, ada6, ada7, ada8 : in std_logic := 'X'; ada9, ada10, ada11, ada12 : in std_logic := 'X'; cea, clka, wea, csa0, csa1, csa2, rsta : in std_logic := 'X'; dib0, dib1, dib2, dib3, dib4, dib5, dib6, dib7, dib8 : in std_logic := 'X'; dib9, dib10, dib11, dib12, dib13, dib14, dib15, dib16, dib17 : in std_logic := 'X'; adb0, adb1, adb2, adb3, adb4, adb5, adb6, adb7, adb8 : in std_logic := 'X'; adb9, adb10, adb11, adb12 : in std_logic := 'X'; ceb, clkb, web, csb0, csb1, csb2, rstb : in std_logic := 'X'; doa0, doa1, doa2, doa3, doa4, doa5, doa6, doa7, doa8 : out std_logic := 'X'; doa9, doa10, doa11, doa12, doa13, doa14, doa15, doa16, doa17 : out std_logic := 'X'; dob0, dob1, dob2, dob3, dob4, dob5, dob6, dob7, dob8 : out std_logic := 'X'; dob9, dob10, dob11, dob12, dob13, dob14, dob15, dob16, dob17 : out std_logic := 'X' ); ATTRIBUTE Vital_Level0 OF dp8ka : ENTITY IS TRUE;END dp8ka ;-- ARCHITECTURE body --ARCHITECTURE V OF dp8ka IS ATTRIBUTE Vital_Level0 OF V : ARCHITECTURE IS TRUE;--SIGNAL DECLARATIONS---- SIGNAL ada_ipd : std_logic_vector(12 downto 0) := (others => '0'); SIGNAL dia_ipd : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL clka_ipd : std_logic := '0'; SIGNAL cea_ipd : std_logic := '0'; SIGNAL wrea_ipd : std_logic := '0'; SIGNAL csa_ipd : std_logic_vector(2 downto 0) := "000"; SIGNAL rsta_ipd : std_logic := '0'; SIGNAL adb_ipd : std_logic_vector(12 downto 0) := "XXXXXXXXXXXXX"; SIGNAL dib_ipd : std_logic_vector(17 downto 0) := "XXXXXXXXXXXXXXXXXX"; SIGNAL clkb_ipd : std_logic := '0'; SIGNAL ceb_ipd : std_logic := '0'; SIGNAL wreb_ipd : std_logic := '0'; SIGNAL csb_ipd : std_logic_vector(2 downto 0) := "000"; SIGNAL rstb_ipd : std_logic := '0'; SIGNAL csa_en : std_logic := '0'; SIGNAL csb_en : std_logic := '0'; SIGNAL g_reset : std_logic := '0'; CONSTANT ADDR_WIDTH_A : integer := data2addr_w(DATA_WIDTH_A); CONSTANT ADDR_WIDTH_B : integer := data2addr_w(DATA_WIDTH_B); CONSTANT new_data_width_a : integer := data2data_w(DATA_WIDTH_A); CONSTANT new_data_width_b : integer := data2data_w(DATA_WIDTH_B); CONSTANT div_a : integer := data2data(DATA_WIDTH_A); CONSTANT div_b : integer := data2data(DATA_WIDTH_B); SIGNAL dia_node : std_logic_vector((new_data_width_a - 1) downto 0) := (others => '0'); SIGNAL dib_node : std_logic_vector((new_data_width_b - 1) downto 0) := (others => '0'); SIGNAL ada_node : std_logic_vector((ADDR_WIDTH_A - 1) downto 0) := (others => '0'); SIGNAL adb_node : std_logic_vector((ADDR_WIDTH_B - 1) downto 0) := (others => '0'); SIGNAL diab_node : std_logic_vector(35 downto 0) := (others => '0'); SIGNAL rsta_int : std_logic := '0'; SIGNAL rstb_int : std_logic := '0'; SIGNAL rsta_reg : std_logic := '0'; SIGNAL rstb_reg : std_logic := '0'; SIGNAL reseta : std_logic := '0'; SIGNAL resetb : std_logic := '0'; SIGNAL dia_reg : std_logic_vector((new_data_width_a - 1) downto 0) := (others => '0'); SIGNAL dib_reg : std_logic_vector((new_data_width_b - 1) downto 0) := (others => '0'); SIGNAL ada_reg : std_logic_vector((ADDR_WIDTH_A - 1) downto 0); SIGNAL adb_reg : std_logic_vector((ADDR_WIDTH_B - 1) downto 0); SIGNAL diab_reg : std_logic_vector(35 downto 0) := (others => '0'); SIGNAL wrena_reg : std_logic := '0'; SIGNAL clka_valid : std_logic := '0'; SIGNAL clkb_valid : std_logic := '0'; SIGNAL clka_valid1 : std_logic := '0'; SIGNAL clkb_valid1 : std_logic := '0'; SIGNAL wrenb_reg : std_logic := '0'; SIGNAL rena_reg : std_logic := '0'; SIGNAL renb_reg : std_logic := '0'; SIGNAL rsta_sig : std_logic := '0'; SIGNAL rstb_sig : std_logic := '0'; SIGNAL doa_node : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL doa_node_tr : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL doa_node_wt : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL doa_node_rbr : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL dob_node : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL dob_node_tr : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL dob_node_wt : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL dob_node_rbr : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL doa_reg : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL dob_reg : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL doab_reg : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL doa_int : std_logic_vector(17 downto 0) := (others => '0'); SIGNAL dob_int : std_logic_vector(17 downto 0) := (others => '0'); CONSTANT initval : string(2560 downto 1) := ( initval_1f(3 to 82)&initval_1e(3 to 82)&initval_1d(3 to 82)&initval_1c(3 to 82)& initval_1b(3 to 82)&initval_1a(3 to 82)&initval_19(3 to 82)&initval_18(3 to 82)& initval_17(3 to 82)&initval_16(3 to 82)&initval_15(3 to 82)&initval_14(3 to 82)& initval_13(3 to 82)&initval_12(3 to 82)&initval_11(3 to 82)&initval_10(3 to 82)& initval_0f(3 to 82)&initval_0e(3 to 82)&initval_0d(3 to 82)&initval_0c(3 to 82)& initval_0b(3 to 82)&initval_0a(3 to 82)&initval_09(3 to 82)&initval_08(3 to 82)& initval_07(3 to 82)&initval_06(3 to 82)&initval_05(3 to 82)&initval_04(3 to 82)& initval_03(3 to 82)&initval_02(3 to 82)&initval_01(3 to 82)&initval_00(3 to 82)); SIGNAL MEM : std_logic_vector(9215 downto 0) := init_ram (initval, DATA_WIDTH_A, DATA_WIDTH_B); SIGNAL j : integer := 0;BEGIN ----------------------- -- input path delays ----------------------- WireDelay : BLOCK BEGIN VitalWireDelay(ada_ipd(0), ada0, tipd_ada0); VitalWireDelay(ada_ipd(1), ada1, tipd_ada1); VitalWireDelay(ada_ipd(2), ada2, tipd_ada2); VitalWireDelay(ada_ipd(3), ada3, tipd_ada3); VitalWireDelay(ada_ipd(4), ada4, tipd_ada4); VitalWireDelay(ada_ipd(5), ada5, tipd_ada5); VitalWireDelay(ada_ipd(6), ada6, tipd_ada6); VitalWireDelay(ada_ipd(7), ada7, tipd_ada7); VitalWireDelay(ada_ipd(8), ada8, tipd_ada8); VitalWireDelay(ada_ipd(9), ada9, tipd_ada9); VitalWireDelay(ada_ipd(10), ada10, tipd_ada10); VitalWireDelay(ada_ipd(11), ada11, tipd_ada11); VitalWireDelay(ada_ipd(12), ada12, tipd_ada12); VitalWireDelay(dia_ipd(0), dia0, tipd_dia0); VitalWireDelay(dia_ipd(1), dia1, tipd_dia1); VitalWireDelay(dia_ipd(2), dia2, tipd_dia2); VitalWireDelay(dia_ipd(3), dia3, tipd_dia3); VitalWireDelay(dia_ipd(4), dia4, tipd_dia4); VitalWireDelay(dia_ipd(5), dia5, tipd_dia5); VitalWireDelay(dia_ipd(6), dia6, tipd_dia6); VitalWireDelay(dia_ipd(7), dia7, tipd_dia7); VitalWireDelay(dia_ipd(8), dia8, tipd_dia8); VitalWireDelay(dia_ipd(9), dia9, tipd_dia9); VitalWireDelay(dia_ipd(10), dia10, tipd_dia10); VitalWireDelay(dia_ipd(11), dia11, tipd_dia11); VitalWireDelay(dia_ipd(12), dia12, tipd_dia12); VitalWireDelay(dia_ipd(13), dia13, tipd_dia13); VitalWireDelay(dia_ipd(14), dia14, tipd_dia14); VitalWireDelay(dia_ipd(15), dia15, tipd_dia15); VitalWireDelay(dia_ipd(16), dia16, tipd_dia16); VitalWireDelay(dia_ipd(17), dia17, tipd_dia17); VitalWireDelay(clka_ipd, clka, tipd_clka); VitalWireDelay(wrea_ipd, wea, tipd_wea); VitalWireDelay(cea_ipd, cea, tipd_cea); VitalWireDelay(csa_ipd(0), csa0, tipd_csa0); VitalWireDelay(csa_ipd(1), csa1, tipd_csa1); VitalWireDelay(csa_ipd(2), csa2, tipd_csa2); VitalWireDelay(rsta_ipd, rsta, tipd_rsta); VitalWireDelay(adb_ipd(0), adb0, tipd_adb0); VitalWireDelay(adb_ipd(1), adb1, tipd_adb1); VitalWireDelay(adb_ipd(2), adb2, tipd_adb2); VitalWireDelay(adb_ipd(3), adb3, tipd_adb3); VitalWireDelay(adb_ipd(4), adb4, tipd_adb4); VitalWireDelay(adb_ipd(5), adb5, tipd_adb5); VitalWireDelay(adb_ipd(6), adb6, tipd_adb6); VitalWireDelay(adb_ipd(7), adb7, tipd_adb7); VitalWireDelay(adb_ipd(8), adb8, tipd_adb8); VitalWireDelay(adb_ipd(9), adb9, tipd_adb9); VitalWireDelay(adb_ipd(10), adb10, tipd_adb10); VitalWireDelay(adb_ipd(11), adb11, tipd_adb11); VitalWireDelay(adb_ipd(12), adb12, tipd_adb12); VitalWireDelay(dib_ipd(0), dib0, tipd_dib0); VitalWireDelay(dib_ipd(1), dib1, tipd_dib1); VitalWireDelay(dib_ipd(2), dib2, tipd_dib2); VitalWireDelay(dib_ipd(3), dib3, tipd_dib3); VitalWireDelay(dib_ipd(4), dib4, tipd_dib4); VitalWireDelay(dib_ipd(5), dib5, tipd_dib5); VitalWireDelay(dib_ipd(6), dib6, tipd_dib6); VitalWireDelay(dib_ipd(7), dib7, tipd_dib7); VitalWireDelay(dib_ipd(8), dib8, tipd_dib8); VitalWireDelay(dib_ipd(9), dib9, tipd_dib9); VitalWireDelay(dib_ipd(10), dib10, tipd_dib10); VitalWireDelay(dib_ipd(11), dib11, tipd_dib11); VitalWireDelay(dib_ipd(12), dib12, tipd_dib12); VitalWireDelay(dib_ipd(13), dib13, tipd_dib13); VitalWireDelay(dib_ipd(14), dib14, tipd_dib14); VitalWireDelay(dib_ipd(15), dib15, tipd_dib15); VitalWireDelay(dib_ipd(16), dib16, tipd_dib16); VitalWireDelay(dib_ipd(17), dib17, tipd_dib17); VitalWireDelay(clkb_ipd, clkb, tipd_clkb); VitalWireDelay(wreb_ipd, web, tipd_web); VitalWireDelay(ceb_ipd, ceb, tipd_ceb); VitalWireDelay(csb_ipd(0), csb0, tipd_csb0); VitalWireDelay(csb_ipd(1), csb1, tipd_csb1); VitalWireDelay(csb_ipd(2), csb2, tipd_csb2); VitalWireDelay(rstb_ipd, rstb, tipd_rstb); END BLOCK; GLOBALRESET : PROCESS (purnet, gsrnet) BEGIN IF (GSR = "DISABLED") THEN g_reset <= purnet; ELSE g_reset <= purnet AND gsrnet; END IF; END PROCESS; rsta_sig <= rsta_ipd or (not g_reset); rstb_sig <= rstb_ipd or (not g_reset);-- set_reset <= g_reset and (not reset_ipd); ada_node <= ada_ipd(12 downto (13 - ADDR_WIDTH_A)); adb_node <= adb_ipd(12 downto (13 - ADDR_WIDTH_B));-- chip select A decode P1 : PROCESS(csa_ipd) BEGIN IF (csa_ipd = "000" and CSDECODE_A = "000") THEN csa_en <= '1'; ELSIF (csa_ipd = "001" and CSDECODE_A = "001") THEN csa_en <= '1'; ELSIF (csa_ipd = "010" and CSDECODE_A = "010") THEN csa_en <= '1'; ELSIF (csa_ipd = "011" and CSDECODE_A = "011") THEN csa_en <= '1'; ELSIF (csa_ipd = "100" and CSDECODE_A = "100") THEN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -