我正在将一个Xilinx ISE项目移植到Quartus II。当我编译该项目时,Quartus崩溃并出现错误:*** Fatal Error: Access Violation at 0X000007FE88160DE1
。所以我试图将错误缩小到一个最小的例子,这将引导我一个隐藏的VHDL错误或一个小例子,我可以发送给Altera。
该项目使用VHDL数据结构(基本类型的向量记录向量记录)来描述SoC设置。简化的结构如下所示:
SoFPGA System
o-DeviceInstances
| o-Device
| o-Registers
| | o-Bitfields
| o-RegisterMappings
o-Busses
我想向综合日志报告完整的结构,但如果消息文本已经打印到日志中,Quartus II似乎会隐藏消息。
示例:
Info (10635): ... at pb.pkg.vhdl(1228): "DeviceInstance 1:" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1229): " DeviceInstance: Mult32" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1230): " Device: Mult32" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1234): " 0: OperandA0 Reg#=0 WR" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1241): " 0: FieldID=0 (OperandA)" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1234): " 1: OperandA1 Reg#=1 WR" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1234): " 2: OperandA2 Reg#=2 WR" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1234): " 3: OperandA3 Reg#=3 WR" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1234): " 4: OperandB0 Reg#=4 WR" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1241): " 0: FieldID=1 (OperandB)" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1234): " 5: OperandB1 Reg#=5 WR" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1234): " 6: OperandB2 Reg#=6 WR" (NOTE)
Info (10635): ... at pb.pkg.vhdl(1234): " 7: OperandB3 Reg#=7 WR" (NOTE)
每个'操作数[A | B]'只打印一次'FieldID'消息。操作数A1,A2,A3和B1,B2,B3之后没有FieldID行。
所以我尝试在每个报告行中添加一个唯一编号(salt
)。为此我定义了一个共享变量,并定义了一个函数salty
,它在每个报表语句中递增salt。
变量和功能:
shared variable salt : NATURAL := 0;
impure function salty return STRING is
begin
salt := salt + 1;
return INTEGER'image(salt);
end function;
用法:
report salty & "pb_CreateRegisterRO:" severity NOTE;
但不幸的是,咸总是返回“0”。 Quartus II支持VHDL'08功能。我应该将共享变量实现为受保护类型并在VHDL'08模式下编译吗?
如何将所有报告声明行打印到综合报告中?
非主题问题:
是否有人有兴趣帮助我找到Quartus崩溃的原因?我将项目剥离为6个VHDL文件。我认为这个问题是针对SO问题的。 Contact