Question about generic usage?

Oct 28, 2006 1 Replies

Hi, I am learning VHDL from Mike's example Uart.vhd in ISE 8.2. For behavioral simulation, I can run Modelsim smoothly. But for other simulation, such as post-translate or post-route simulation, there are the following warnings:



# Reading C:/Modeltech_xe_starter/tcl/vsim/pref.tcl # do {test_uart.ndo} # ** Warning: (vlib-34) Library already exists at "work". # Model Technology ModelSim XE III vcom 6.1e Compiler 2006.03 Mar 8



2006 # -- Loading package standard # -- Loading package std_logic_1164 # -- Loading package vital_timing # -- Loading package vcomponents # -- Loading package vital_primitives # -- Loading package textio # -- Loading package vpackage # -- Compiling entity uart # -- Compiling architecture structure of uart # Model Technology ModelSim XE III vcom 6.1e Compiler 2006.03 Mar 8
2006 # -- Loading package standard # -- Loading package std_logic_1164 # -- Loading package numeric_std # -- Loading package uart_pkg # -- Compiling entity test_uart # -- Compiling architecture sim of test_uart # -- Loading package vital_timing # -- Loading package vcomponents # -- Loading package vital_primitives # -- Loading package textio # -- Loading package vpackage # -- Loading entity uart # ** Error: test_uart.vhd(110): (vcom-1136) Unknown identifier "char_len_g". # ** Error: test_uart.vhd(111): (vcom-1136) Unknown identifier "tic_per_bit_g". # ** Error: test_uart.vhd(407): VHDL Compiler exiting # ** Error: C:/Modeltech_xe_starter/win32xoem/vcom failed. # Error in macro ./test_uart.ndo line 7 # C:/Modeltech_xe_starter/win32xoem/vcom failed. # while executing # "vcom -explicit -93 "test_uart.vhd""

After I check the library work, I find the work.uart (for other than behavioral simulation) does not have char_len_g anymore (only the source, i.e. behavioral file has that generic definition). How to deal with this?


Thank you in advance.


From test_uart.vhd:

begin -- architecture sim dut : entity work.uart generic map (char_len_g => tb_char_g, -- for vsim command line overload tic_per_bit_g => tb_tics_g)

Choose one.

  1. Skip the post-route sim because it is not normally needed with a synchronous design.

  1. Search and replace the _g identifiers with constants.

  2. Open a case with Xilinx and ask them to fix whatever software generates test_uart.ndo

  1. Write your own do script using vsim -G as shown in the reference testbench.

-- Mike Treseler

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required