Estoy tratando de simular un módulo verilog que usa el módulo "lpm_add_sub" para proporcionar un sumador con un arrastre por separado (por alguna razón, Quartus II no reconoce ese a+b+c
donde c
es un solo bit se puede implementar en un solo sumador y sintetiza dos sumadores para ello). Sin embargo, cuando intento iniciar la simulación en ModelSim, recibo los siguientes mensajes:
vsim -L altera_ver -L altera_mf_ver -L cycloneiv_ver -L cycloneive_ver -L lpm_ver -voptargs=+acc work.rotation_sensor
# vsim -L altera_ver -L altera_mf_ver -L cycloneiv_ver -L cycloneive_ver -L lpm_ver -voptargs=+acc work.rotation_sensor
# Loading work.rotation_sensor
# Loading work.bitcounter
# Loading lpm_ver.lpm_add_sub
# ** Error: (vsim-3584) C:/Development/ican/IcanFinal2/rotation_sensor.v(119): Module parameter 'LPM_DIRECTION' not found for override.
#
# Region: /rotation_sensor/bitcounter/genblk1
# ** Error: (vsim-3584) C:/Development/ican/IcanFinal2/rotation_sensor.v(119): Module parameter 'LPM_REPRESENTATION' not found for override.
#
# Region: /rotation_sensor/bitcounter/genblk1
# ** Error: (vsim-3584) C:/Development/ican/IcanFinal2/rotation_sensor.v(119): Module parameter 'LPM_WIDTH' not found for override.
#
# Region: /rotation_sensor/bitcounter/genblk1
# Error loading design
¿Alguna idea de lo que estoy haciendo mal? La línea de código que causa el error es la siguiente:
lpm_add_sub #(.LPM_DIRECTION("ADD"), .LPM_WIDTH(SUBRESULTSIZE), .LPM_REPRESENTATION("UNSIGNED")) a (
.dataa(tophalf_count),
.datab(bottomhalf_count),
.cin(bits[INPUTWIDTH-1]),
.result(add_out[SUBRESULTSIZE-1:0]),
.cout(add_out[SUBRESULTSIZE]));