在Quartus II(V15.02)编译时(步骤分析和合成)当我在顶层实体中为qsys设计分配端口映射时,我得到以下错误:
-------------------------------------------- ------------------
问题详情 错误:
致命错误:0000000000000000处的访问冲突 模块:quartus_map.exe无法获取堆栈跟踪
可执行文件:quartus_map
点评:
没有
系统信息
平台:windows64
操作系统名称:Windows 7 //我正在运行Win 10 64bit
操作系统版本:6.2
Quartus II信息
地址位:64
版本:15.0.2
建立:153
版本:完整版
-------------------------------------------- ------------------
我清理了项目后(项目 - >修订名称:* - >确定)每次运行分析&时,我都会得到上述错误合成
我的项目包含: VHDL文件 使用QSYS生成的导入.qip文件。在QSYS中,我确实在第一次出现错误后生成了一个新的hdl文件,但结果相同。我也删除了db命令,但结果仍然相同。该项目工作
我的项目包含(直到第一次出现错误)一个Signal Tap和.sdc文件,并且在sdc文件中有以下行:
derive_clock_uncertainty
derive_pll_clocks
我从硬盘中删除了.sdc文件并再次尝试 - 结果相同
我删除了.qip文件,注释了端口映射并编译成功
然后我在QSYS中生成了一个新的HDL文件。
在此之后我在Quartus II中添加了.qip文件(端口地图仍然评论过) - >成功
然后我取消注释了端口映射定义 - >错误
弹出错误消息之前的最后几个日志如下:
Info(10264):altera_trace_transacto_lite.v上的Verilog HDL案例陈述信息(206):此案例陈述中的所有案例项表达式均为onehot
信息(10264):altera_trace_transacto_lite.v(314)中的Verilog HDL案例陈述信息:此案例陈述中的所有案例项表达式均为onehot
警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(92)中的Verilog HDL或VHDL警告:object" state_read_addr"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(96)中的Verilog HDL或VHDL警告:object" state_d1"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(98)中的Verilog HDL或VHDL警告:object" in_ready_d1"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(117)中的Verilog HDL或VHDL警告:object" b_startofpacket_wire"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(123)中的Verilog HDL或VHDL警告:object" mem_readdata0"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(128)中的Verilog HDL或VHDL警告:object" mem_readdata1"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(133)中的Verilog HDL或VHDL警告:object" mem_readdata2"分配了一个值,但从未读过 警告(10858):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(140)中的Verilog HDL警告:对象state_waitrequest已使用但从未分配
警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(141)中的Verilog HDL或VHDL警告:object" state_waitrequest_d1"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(144)中的Verilog HDL或VHDL警告:object" out_channel"分配了一个值但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(147)中的Verilog HDL或VHDL警告:object" out_empty"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(150)中的Verilog HDL或VHDL警告:object" out_error"分配了一个值,但从未读过 警告(10230):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv上的Verilog HDL分配警告(285):大小为32的截断值,以匹配目标大小(1)
警告(10230):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(301)中的Verilog HDL分配警告:大小为32的截断值,以匹配目标的大小(1)
警告(10230):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(317)中的Verilog HDL分配警告:大小为32的截断值与目标大小(1)相匹配
警告(10230):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv上的Verilog HDL分配警告(334):大小为32的截断值,以匹配目标大小(1)
警告(10036):alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(92)中的Verilog HDL或VHDL警告:object" state_read_addr"分配了一个值,但从未读过 警告(10858):alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(137)中的Verilog HDL警告:对象state_waitrequest已使用但从未分配
警告(10036):alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(138)中的Verilog HDL或VHDL警告:object" state_waitrequest_d1"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(141)中的Verilog HDL或VHDL警告:object" out_channel"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(147)中的Verilog HDL或VHDL警告:object" out_error"分配了一个值,但从未读过 警告(10230):alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(290)中的Verilog HDL分配警告:截断值大小为32以匹配目标大小(2)
警告(10230):alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(311)中的Verilog HDL分配警告:截断值,大小为32,以匹配目标大小(2)
警告(10230):alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(334)中的Verilog HDL分配警告:大小为32的截断值,以匹配目标的大小(2)
警告(10230):alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(353)中的Verilog HDL分配警告:截断值大小为32以匹配目标大小(2)
警告(10036):alt_sld_fab_alt_sld_fab_host_link_jtag_h2t_timing.sv(82)中的Verilog HDL或VHDL警告:object" in_ready"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_stfabric_mgmt_demux_port_adap.sv(74)中的Verilog HDL或VHDL警告:object" out_channel"分配了一个值,但从未读过 警告(10036):alt_sld_fab_alt_sld_fab_stfabric_mgmt_time_adap.sv(84)中的Verilog HDL或VHDL警告:object" in_ready"分配了一个值,但从未读过 信息(12206):2个设计分区需要合成
信息(12213):分区" Top"需要综合,因为项目数据库不包含该分区的综合后网表
信息(12213):分区" sld_hub:auto_hub"需要综合,因为项目数据库不包含该分区的综合后网表
Info(12209):在当前的增量编译中,没有设计分区会跳过综合
我尝试使用此代码完成的是测试我路由到Qsys系统的50MHz外部时钟和来自Qsys中定义的PLL的10MHz时钟,每个信号都有一个LED。 以下是顶级实体的代码:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity helloworld_lab1 is
Port (
clk_50_max10 : in std_logic; --50MHz Clock
--clk_25_max10 : in std_logic; --25MHz Clock
--clk_10_adc : in std_logic; --10MHz Clock
cpu_resetn : in std_logic; -- Button 0
user_led : out std_logic_vector (4 downto 0);
user_pb : in std_logic_vector(3 downto 0); -- Middle Buttons
);
end entity helloworld_lab1;
architecture behaviour of helloworld_lab1 is
-- Qsys Component --
component helloworld_lab is
port (
clk_clk : in std_logic := 'X'; -- clk
reset_reset_n : in std_logic := 'X'; -- reset_n
pio_switch_external_connection_export : in std_logic_vector(1 downto 0) := (others => 'X'); -- export
pio_led_external_connection_export : out std_logic_vector(2 downto 0); -- export
pll_clock_clk : out std_logic -- export
);
end component helloworld_lab;
Signal cycle_counter : integer range 0 to 50000000; -- 50 MHz results in 1 Second
Signal pll_cycle_counter : integer range 0 to 10000000; -- 10 MHZ results in 1 Second
Signal led_1sec : std_logic:='0'; -- Signal LED 0
Signal led_pll : std_logic :='1'; -- Signal LED 4
Signal clock_pll : std_logic; -- Port Map PLL Clock
begin
blink_led_1s : process (clk_50_max10)
begin
if (rising_edge(clk_50_max10)) then
cycle_counter <= cycle_counter+1;
if (cycle_counter>=49999999) then
cycle_counter<=0;
led_1sec<=not led_1sec;
end if;
end if;
end process blink_led_1s;
user_led(0)<=led_1sec;
-----------------------------------------------------------------------
blink_led_pll : process (clock_pll)
begin
if (rising_edge(clock_pll))then
pll_cycle_counter <= pll_cycle_counter+1;
if (pll_cycle_counter<=9999999) then
pll_cycle_counter<=0;
led_pll<=not led_pll;
end if;
end if;
end process blink_led_pll;
user_led(4) <=led_pll;
---------------------------------------------------------------------
-----------------------------------Qsys port map-----------------------------------------------
QSYS : component helloworld_lab
port map (
clk_clk => clk_50_max10,
reset_reset_n => cpu_resetn,
pio_switch_external_connection_export => user_pb(3 downto 2),
pio_led_external_connection_export => user_led(3 downto 1),
pll_clock_clk => clock_pll
);
end architecture behaviour;
这是Qsys系统的截图。
感谢您解决此问题的任何帮助。