Devido a um problema no software Intel® Quartus® Prime Pro Edition versão 19.1, o comportamento de simulação de função pode estar incorreto quando seu projeto contém vários IPs de porta RAM-2 que permitem "Emular o modo de clock duplo TDP" e executar o script de simulação gerado automaticamente. Os múltiplos IPs de RAM dcfifo_in e dcfifo_out submodules com o mesmo nome do módulo. Mas os arquivos de dcfifo_in e dcfifo_out ip insistem em diferentes submodules. No script de simulação, todos os dcfifo_in, dcfifo_out e seus arquivos submodules de diferentes IPs de RAM são compilados na mesma biblioteca de simulação. Portanto, os arquivos mais recentes dcfifo_in e dcfifo_out sobregrava os arquivos anteriores. Todos os IPs de RAM usam os mesmos módulos dcfifo_in e dcfifo_out e levam ao comportamento incorreto de simulação.
Para resolver este problema, modifique o script de simulação na ferramenta sim/comum/_files.tcl para criar bibliotecas diferentes para diferentes IPs de RAM e compilar instâncias dcfifo_in e dcfifo_out em diferentes bibliotecas correspondentemente.
- Roteiro original:
proc get_design_libraries {} {
definir bibliotecas [criar o dict]
bibliotecas de conjunto de fifo_191 1
bibliotecas de conjunto de ram_2port_191 1
bibliotecas de conjunto de dct dpram32x512 1
bibliotecas de conjunto de dct dpram16x1024 1
devolução $libraries}
proc get_design_files {USER_DEFINED_COMPILE_OPTIONS USER_DEFINED_VERILOG_COMPILE_OPTIONS USER_DEFINED_VHDL_COMPILE_OPTIONS QSYS_SIMDIR} {
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_in.v"]"\" -trabalho ram_2port_191"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_out.v"]"\" -trabalho ram_2port_191"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dpram32x512_ram_2port_191_6nqqinq.v"]\" -trabalho ram_2port_191"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/tdp_dpram32x512_ram_2port_191_6nqqinq.v"]"\" -trabalho ram_2port_191"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_in.v"]\" -trabalho ram_2port_191"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_out.v"]\" -trabalho ram_2port_191"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dpram16x1024_ram_2port_191_u7jjoxa.v"]\" -trabalho ram_2port_191"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/tdp_dpram16x1024_ram_2port_191_u7jjoxa.v"]\" -trabalho ram_2port_191"
devolver $design_files
}
- Script modificado:
proc get_design_libraries {} {
bibliotecas definidas [dict create] conjunto de dct bibliotecas fifo_191 1
bibliotecas de conjunto de ram_2port_191_0 1
bibliotecas de conjunto de ram_2port_191_1 1
bibliotecas de conjunto de dct dpram32x512 1
bibliotecas de conjunto de dct dpram16x1024 1
devolução $libraries}
proc get_design_files {USER_DEFINED_COMPILE_OPTIONS USER_DEFINED_VERILOG_COMPILE_OPTIONS USER_DEFINED_VHDL_COMPILE_OPTIONS QSYS_SIMDIR} {
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_in.v"]\" -trabalho ram_2port_191_1"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dcfifo_out.v"]\" -work ram_2port_191_1"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/dpram32x512_ram_2port_191_6nqqinq.v".\" -trabalho ram_2port_191_1"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram32x512/dpram32x512/ram_2port_191/sim/tdp_dpram32x512_ram_2port_191_6nqqinq.v"]"\" -trabalho ram_2port_191_1"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_in.v"]\" -trabalho ram_2port_191_0"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dcfifo_out.v"]\" -trabalho ram_2port_191_0"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/dpram16x1024_ram_2port_191_u7jjoxa.v"]\" -trabalho ram_2port_191_0"
lappend design_files "vlog $USER_DEFINED_VERILOG_COMPILE_OPTIONS $USER_DEFINED_COMPILE_OPTIONS \"[normalize_path "$QSYS_SIMDIR/dpram16x1024/dpram16x1024/ram_2port_191/sim/tdp_dpram16x1024_ram_2port_191_u7jjoxa.v"]"\" -trabalho ram_2port_191_0"
devolver $design_files}
Este problema é corrigido a partir da versão 19.3 do software Intel® Quartus® Prime Pro Edition.