在 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
版本:完整版
-------------------------------------------------- ------------
清理项目后(项目 -> 修订名称:* -> 确定),每次运行Analysis & Synthesis时都会出现上述错误。
我的项目包含: VHDL 文件 使用 QSYS 生成的导入 .qip 文件。在 QSYS 中,我确实在第一次出现错误后生成了一个新的 hdl 文件,但是......结果相同。我也删除了数据库订单,但结果仍然相同。该项目奏效
我的项目包含(直到第一次出现错误)一个 Signal Tap 和 .sdc 文件,并且在 sdc 文件中包含以下行:
派生时钟不确定性
派生PLL时钟
我从硬盘驱动器中删除了 .sdc 文件并再次尝试 - 结果相同
我删除了 .qip 文件注释端口映射并编译 - 成功
然后我在 QSYS 中生成了一个新的 HDL 文件。
在此之后,我在 Quartus II 中添加了 .qip 文件(端口映射仍然有注释)-> 成功
然后我取消注释端口映射定义 - >错误
错误信息弹出前的最后几条日志如下:
信息 (10264):altera_trace_transacto_lite.v(206) 中的 Verilog HDL 案例语句信息:此案例语句中的所有案例项表达式都是 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 警告:对象“state_read_addr”分配了一个值但从未读取
警告 (10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(96) 处的 Verilog HDL 或 VHDL 警告):对象“state_d1”分配了一个值但从未读取
警告(10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(98)处的Verilog HDL或VHDL警告:对象“in_ready_d1”分配了一个值但从未读取
警告 (10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(117) 处的 Verilog HDL 或 VHDL 警告:对象“b_startofpacket_wire”分配了一个值但从未读取
警告 (10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(123) 对象处的 Verilog HDL 或 VHDL 警告分配了一个值但从未读取
警告 (10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(128) 处的 Verilog HDL 或 VHDL 警告:对象“mem_readdata1”分配了一个值但从未读取
警告 (10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(13333333333333333333 ):对象“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 警告:对象“state_waitrequest_d1”分配了一个值但从未读取
警告 (10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(144) 处的 Verilog HDL 或 VHDL 警告对象:分配了一个值但从未读取警告 (10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(147) 处的 Verilog HDL 或 VHDL 警告:对象“out_empty”分配了一个值但从未读取
警告 (10036):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(150) 处的 Verilog HDL 或 VHDL 警告):对象“out_error”分配了一个值但从未读取
警告(10230):alt_sld_fab_alt_sld_fab_trfabric_capture_width.sv(285)处的Verilog HDL分配警告:大小为 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(334) 处的 Verilog HDL 分配警告:大小为 32 的截断值以匹配目标大小 (1)
警告 (10036):Verilog HDL 或 VHDL 警告在 alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(92):对象“state_read_addr”分配了一个值但从未读取
Warning (10858): Verilog HDL warning at alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(137): object state_waitrequest used but never assigned
Warning (10036): Verilog HDL or VHDL warning at alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(138): object "state_waitrequest_d1" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(141): object "out_channel" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(147): object "out_error"赋值但从未读取
Warning (10230): Verilog HDL assignment warning at alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(290): truncated value with size 32 to match size of target (2)
Warning (10230): Verilog HDL assignment warning at alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(311): truncated value with大小 32 以匹配目标大小 (2)
警告 (10230):在 alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(334) 处的 Verilog HDL 分配警告:大小为 32 的截断值以匹配目标大小 (2)
警告 (10230):Verilog HDL 分配警告alt_sld_fab_alt_sld_fab_trfabric_avalon_st_adapter_data_format_adapter_0.sv(353):大小为 32 的截断值以匹配目标 (2) 的大小
警告(10036):alt_sld_fab_alt_sld_fab_host_link_jtag_h2t_timing.sv(82)处的 Verilog HDL 或 VHDL 警告:对象“in_ready”分配了一个值但从未读取
警告(10036):alt_sld_fab_alt_sld_fab_stfabric_mgmt_demux_port_adap.sv 处的 Verilog HDL 或 VHDL 警告)“对象”7分配了一个值但从未读取
警告(10036):alt_sld_fab_alt_sld_fab_stfabric_mgmt_time_adap.sv(84)处的Verilog HDL或VHDL警告:对象“in_ready”分配了一个值但从未读取
信息(12206):2个设计分区需要综合
信息(12213):分区“顶部”需要综合,因为项目数据库不包含此分区的综合后网表
信息 (12213):分区“sld_hub:auto_hub”需要综合,因为项目数据库不包含此分区的综合后网表
信息 (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系统的截图。
我将不胜感激任何帮助来解决这个问题。